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