PyhontPygame 飞船大战外星人 完整代码及资源下载

这是一个使用Python的Pygame库开发的飞船大战外星人游戏介绍。游戏包括移动飞船、射击外星人的功能,由9个模块组成:主函数alinen_invasion.py、ship.py(飞船)、alien.py(外星人)、Setting.py(设置)、game_function.py(系统功能)、biu.py(子弹)、game_state.py(游戏状态)、button.py(按钮)和scoreboard.py(计分板)。玩家通过左右键移动,空格键射击。提供pygame模块安装指导和游戏资源下载链接。
摘要由CSDN通过智能技术生成

一、游戏介绍
1.游戏规则:左右键移动,空格键射击
2.游戏代码主要由一个主运行程序(alien_invasion.py)和八个模块组成:
1>主函数alinen_invasion.py
2>飞船函数ship.py
3>外星人模块alien.py
4>设置模块Setting.py
5>系统功能的模块game_function.py
6>子弹模块biu.py
7>系统信息的模块game_state.py
8>按钮模块button.py
9>计分板模块scoreboard.py

二、游戏环境搭建

  1. 本练习使用了python3.5版本
  2. pygame 模块安装,打开命令窗口,输入命令安装:
    python -m pip install pygame
  3. 游戏图片下载:
    URl:https://download.csdn.net/download/qq_35871505/18992871

三、游戏代码如下:
1.主函数alinen_invasion.py

# __author__ = 'lzc'
# -*- coding: UTF-8 -*-

import sys
import pygame
from setting import Settings
from ship import Ship
import game_functions as gf
from pygame.sprite import Group
from alien import Alien
from game_stats import GameStats
from button import Button
from scoreboard import Scoreboard
import time

def run_game():
    #初始化游戏并创建一个屏幕对象

    pygame.init()

    #引用settings类
    ai_settings=Settings()

    #屏幕的大小
    screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
    pygame.display.set_caption("飞机大战")

    #创建按钮
    play_button = Button(ai_settings,screen,'PLAY')

    #创建飞船
    ship = Ship(ai_settings,screen)

    #创建存储子弹的编组
    bullets=Group()

    #创建外星人群
    aliens=Group()
    gf.create_fleet(ai_settings,screen,ship,aliens)

    #创建一个存储游戏统计信息的实例
    stats=GameStats(ai_settings)

    #创建记分牌
    sb =Scoreboard(ai_settings,screen,stats)
    #开始游戏的主循环
    while True:

        #监控键盘和鼠标事件
        gf.check_events(ai_settings,screen,stats,sb,play_button,ship,aliens,bullets)

        if stats.game_active:
            #更新船的位置
            ship.update()
            #更新子弹位置
            gf.update_bullets(ai_settings,screen,stats,sb,ship,aliens,bullets)
            #外星人移动
            gf.update_aliens(ai_settings,screen,stats,sb,ship,aliens,bullets)

        #更新屏幕
        gf.update_screen(ai_settings,screen,stats,sb,ship,aliens,bullets,play_button)
        #time.sleep(0.001)

run_game()


2.飞船函数ship.py

# __author__ = 'lzc'
# -*- coding: UTF-8 -*-

import pygame
from pygame.sprite import Sprite

#需要 ship 继承Sprite,以便能够创造出飞船编组
class Ship(Sprite):

    def __init__(self,ai_settings,screen):

        super(Ship,self).__init__()   #ship继承Sprite
        self.screen = screen
        self.ai_settings=ai_settings

        #加载飞船图像并获取其外接矩形
        self.image = pygame.image.load('images/ship.bmp')
        self.rect = self.image.get_rect()  # 得到小飞机的矩形区域
        self.screen_rect = screen.get_rect()  # 得到screen的矩形区域

        #将每艘新飞船放在屏幕底部中央
        self.rect.centerx = self.screen_rect.centerx  # 水平居中
        self.rect.bottom = self.screen_rect.bottom  # 底部
        #self.rect.centery=self.screen_rect.centery #置于中心

        #在飞船属性center中存储小数值
        self.center= float(self.rect.centerx)  #飞船横坐标的值
        self.centery=float(self.rect.centery)  #飞船纵坐标的值

        #移动标识
        self.moving_right=False
        self.moving_left=False
        self.moving_up=False
        self.moving_down=False

    def update(self):

        #更新飞船的center值而不是rect值
        if self.moving_right and self.rect.right < self.screen_rect.right:
            self.center +=self.ai_settings.ship_speed_factor
        if self.moving_left and self.rect.left>0:
            self.center -=self.ai_settings.ship_speed_factor

        if self.moving_down and self.rect.bottom<self.screen_rect.bottom:
            self.centery+=self.ai_settings.ship_speed_factor
        if self.moving_up and self.rect.top>0:
            self.centery-=self.ai_settings.ship_speed_factor

        #根据self.center,更新rect对象
        self.rect.centerx=self.center
        self.rect.centery=self.centery

    #飞船置于底部
    def botton_ship(self):
        self.center =self.screen_rect.centerx
        self.centery = self.screen_rect.bottom - 30  # 底部

    def blitme(self):
        self.screen.blit(self.image,self.rect) # 在指定位置绘制小飞机


3.外星人模块alien.py

# __author__ = 'lzc'
# -*- coding: UTF-8 -*-
import pygame
from pygame.sprite import Sprite

class Alien(Sprite):
    '''外星人的类'''

    def __init__(self,ai_settings,screen):
        super
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小名照深

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值