pygame写入图片后不显示

编程小白在做一个非常基础的pygame练习,题目是在屏幕上显示一系列整齐排列的星星。写入了星星的图片,但是屏幕上只能显示背景,一颗星星也显示不出来,麻烦各位大神帮忙看一下哪里写错了好嘛555

  1. 主程序nightsky.py
import pygame
import sys
from star import Star
from settings import Settings

class Nightsky:

	def __init__(self):
		pygame.init()
		self.settings = Settings()

		self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))
		pygame.display.set_caption('Nightsky')
		self.stars = pygame.sprite.Group()

	def run_game(self):
		while True:
			self._create_constellation()
			self._update_screen()
			for event in pygame.event.get():
				if event.type == pygame.QUIT:
					sys.exit()

	def _create_constellation(self):
		star = Star(self)
		star_width, star_height = star.rect.size
		available_space_x = self.settings.screen_width - star_width
		number_star_x = available_space_x // (2 * star_width)
		available_space_y = self.settings.screen_height - star_height
		number_rows = available_space_y // (2 * star_height)

		for row_number in range(number_rows) :
			for star_number in range(number_star_x):
				self._update_star(star_number, row_number)


	def _create_star(self,star_number, row_number):
		star = Star(self)
		star_width, star_height = star.rect.size
		star.x = star_width + 2 * star_width * star_number
		star.rect.x = star.x
		star.rect.y = star_height + 2 * star_height * row_number
		self.stars.add(star)

	def _update_screen(self):
		self.screen.fill(self.settings.bg_color)
		self.stars.draw(self.screen)
		
		pygame.display.flip()

if __name__ == '__main__':
	ns = Nightsky()
	ns.run_game()

2. 存储默认设置的模块settings.py

class Settings:

	def __init__(self):
		self.screen_width = 1200
		self.screen_height = 800
		self.bg_color = (29, 32, 88)

3. 存储关于星星设置的模块star.py

import pygame

from pygame.sprite import Sprite

class Star(Sprite):

	def __init__(self,ns_game):

		super().__init__()
		self.screen = ns_game.screen
		self.screen_rect = ns_game.screen.get_rect()

		self.image = pygame.image.load('images/star.bmp')
		self.rect = self.image.get_rect()
		
		self.rect.x = self.rect.width
		self.rect.y = self.rect.height

		self.x = float(self.rect.x)

 

可以看下【star.bmp】有没有问题?

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632