第一个游戏,菜鸡的我按教程来的,成功运行了,打包遇到点问题,还在摸索。
模块:
主程序:game1_main.py
"""
对象screen是一个surface,每经过一次循环都将自动重绘这个 surface。在Pygame中,surface是屏幕的一部分,用于显示游戏元素。
在这个游戏中,每个元素(如外星人或飞船)都是一个 surface。
"""
import pygame
from game1.game1_set import sett
from game1.game1_ship_set import ship_set
import game1.game1_function as game_function
from pygame.sprite import Group
from game1.game1_info import game_stats
from game1.game1_button_set import button
from game1.game1_score_set import scoreboard
#import sys
def mygame():
#print(sys.path)
myset = sett() # 屏幕、飞船、子弹 设置类set实例化
pygame.init() # 背景初始化
screen = pygame.display.set_mode((myset.screen_width, myset.screen_height)) # 创建屏幕窗口对象screen,并设置大小--->参数【一个元组】
pygame.display.set_caption("python_game") # 游戏窗口名字
play_button = button(myset, screen, "start") # 开始按钮实例化
stats = game_stats(myset) # 游戏信息类实例化
sb = scoreboard(myset, screen, stats)
myship = ship_set(myset,screen) # 飞船类ship_set实例化
bullets = Group() # 初始化子弹编组
aliens = Group() # 初始化外星人编组 alienn = alien(myset,screen) # 一个外星人类实例化
game_function.aliens_doing(myset,screen, myship, aliens)
while True: # 开始游戏的主循环【游戏主体】
game_function.mylisten(myset, stats,sb,screen, myship,aliens, bullets,play_button) # 事件监听【鼠标及键盘】
if stats.game_active : # 游戏状态【活跃】
myship.update() # 检测控制条件
game_function.bullet_doing(myset, myship,stats,sb,screen, aliens, bullets) # 子弹事件
game_function.update_aliens(myset, stats,sb, screen, myship, aliens, bullets) # 外星人事件
game_function.screen_doing(myset,stats,screen,sb,myship,aliens,bullets,play_button) # 屏幕事件
mygame()
设置类:game1_set.py
class sett: # 屏幕对象设置类 【setting.py】
def __init__(self):
self.screen_width = 800 # 设置窗口宽度
self.screen_height = 400 # 设置窗口高度
self.bg_color = (230, 230, 230) # 设置默认颜色
self.ship_limit = 3 #飞船设置
self.bullet_width = 3 #子弹设置
self.bullet_height = 15
self.bullet_color = (60,60,60)
self.bullet_num = 10
self.fleet_drop_speed = 25 #外星人设置
self.speedup_scale = 1.1 # 游戏节奏加速
self.score_scale = 1.5 # 外星人点数的提高速度
self.initialize_dynamic_settings()
def initialize_dynamic_settings(self):
self.ship_speed = 3 # 飞船移动速度
self.bullet_speed = 3 #子弹设置
self.alien_speed = 0.5 # 外星人速度
self.fleet_direction = 1 # fleet_direction 为1表示向右移,为-1表示向左移
self.alien_points = 50
def increase_speed(self):
self.ship_speed *= self.speedup_scale
self.bullet_speed *= self.speedup_scale
self.alien_speed *= self.speedup_scale
self.alien_points = int(self.alien_points * self.score_scale)
飞船类:game1_ship_set.py
"""
在Pygame中,原点 (0, 0)位于屏幕左上角,向右下方移动时,坐标值将增大。在 1200×800 的屏幕上,原点位于左上角,而右下角的坐标为 (1200, 800);
要将游戏元素居中,可设置相 rect对象的属性 center 、centerx 或 centery。要让游戏元素与屏幕边缘对齐,可使用属性top、bottom、left或right;
要调整游戏元素的水平或垂直位置,可使用属性x和 y ,它们分别是相应矩形左上角的x和y坐标。
"""
import pygame
from pygame.sprite import Sprite
class ship_set(Sprite): # 飞船信息设置类
def __init__(self,myset,screen):
super(ship_set, self)