1.找一幅星星的图像,并在屏幕上显示一系列整齐排列的星星
先创建一个star类;
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
#星星类
import pygame
from pygame.sprite import Sprite
class Star(Sprite):
def __init__(self,ai_settings,screen):
super().__init__()
self.screen=screen
self.ai_settings=ai_settings
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)
def blitme(self):
self.screen.blit(self.image,self.rect)
设置类:
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
#存储作业例子的设置类
class Setting():
def __init__(self):
self.screen_width=800 #设置屏幕高度宽度,背景颜色
self.screen_height=600
self.bg_color=(230,230,230)
功能模块:
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
#功能模块,包括按键的设置检测,退出游戏设置
import pygame
import sys
from star import Star
#检测鼠标键盘事件
def check_events(screen):
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
#计算每行可以放入多少个星星
def star_number_x(ai_settings,star_width):
available_space_x=ai_settings.screen_width-2*star_width
number_stars=int(available_space_x/(2*star_width))
return number_stars
#计算可以放入多少行
def star_number_rows(ai_settings,star_height):
available_space_y=ai_settings.screen_height-2*star_height
rows_number=int(available_space_y/(2*star_height))
return rows_number
#创建一个星星
def creat_star(ai_settings,screen,stars,star_number,row_number):
star=Star(ai_settings,screen)
star_width=star.rect.width
star.x=star_width+2*star_width*star_number
star.rect.x=star.x
star.rect.y=star.rect.height+2*star.rect.height*row_number
stars.add(star)
#创建一群星星
def creat_star_group(ai_settings,screen,stars):
star=Star(ai_settings,screen)
number_stars_x=star_number_x(ai_settings,star.rect.width)
rows_number=star_number_rows(ai_settings,star.rect.height)
for row_number in range(rows_number):
for star_number in range(number_stars_x):
creat_star(ai_settings,screen,stars,star_number,row_number)
#更新屏幕:
def update_screen(ai_settings,screen,stars):
screen.fill(ai_settings.bg_color)
stars.draw(screen)
pygame.display.flip()
主程序:
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
import sys #退出时需要这个模块
import pygame #导入游戏模块
from setting import Setting #导入设置类
from star import Star #导入图片类
from pygame.sprite import Group
import game_functions as gf #导入功能模块
def run_game():
pygame.init() #初始化,创建屏幕对象
ai_settings=Setting() #创建一个800*800的屏幕
screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
pygame.display.set_caption("13-1") #对于这个窗口的命名
stars=Group()
gf.creat_star_group(ai_settings,screen,stars)
"开始游戏的主代码循环"
while True:
gf.check_events(screen)
gf.update_screen(ai_settings,screen,stars)
run_game()
运行主程序后,结果如下:
2.随机分布星星
在1的基础上:
修改star类:
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
#星星类
#星星类
import pygame
from pygame.sprite import Sprite
from random import randint
class Star(Sprite):
def __init__(self,ai_setings,screen):
super().__init__()
self.screen=screen
self.random_number=randint(-10, 10)
self.image=pygame.image.load('images/star.bmp')
self.r