用pyhton写了一个飞机大战

import pygamefrom plane_sprites import *

class PlaneGame(object):    """飞机大战主游戏"""

def __init__(self):        print("游戏初始化")        # 1,绘制屏幕窗口        self.screen = pygame.display.set_mode(SCREEN_RECT.size)        # 2,创建时钟        self.clock = pygame.time.Clock()        # 3,调用私有方法,精灵和精灵组的创建        self.sprite_creat()        # 4,设置定时器事件,创建敌机        pygame.time.set_timer(CREATE_ENEMY_EVENT, 400)        pygame.time.set_timer(HERO_FIRE_EVENT, 200)    def sprite_creat(self):        bg1 = BackGround()        bg2 = BackGround(True)        self.bg_group = pygame.sprite.Group(bg1, bg2)        self.enemy_group = pygame.sprite.Group()

# 创建英雄的精灵和精灵组        self.hero = Hero()        self.hero_group = pygame.sprite.Group(self.hero)

def start_game(self):        print("游戏开始。。。")        while True:            # 1,设置刷新帧率            self.clock.tick(FRAME_PER_SEC)            # 2,事件监听            self.__event_handle()            # 3,碰撞检测            self.__check_collide()            # 4,更新/绘制精灵和精灵组            self.__updtae_sprites()            # 5,更新显示            pygame.display.update()

def __event_handle(self):        for event in pygame.event.get():            if event.type == pygame.QUIT:                PlaneGame.__game_over()            elif event.type == CREATE_ENEMY_EVENT:                print("敌机出场。。。")                # 创建敌机精灵                enemy = Enemy()                # 敌机精灵添加到敌机精灵组                self.enemy_group.add(enemy)            elif event.type == HERO_FIRE_EVENT:                self.hero.fire()

# 移动英雄        keys_pressed = pygame.key.get_pressed()        if keys_pressed[pygame.K_RIGHT]:            self.hero.speed = 5        elif keys_pressed[pygame.K_LEFT]:            self.hero.speed = -5        else:            self.hero.speed = 0

def __check_collide(self):        pygame.sprite.groupcollide(self.hero.bullets, self.enemy_group, True, True)        enemies = pygame.sprite.spritecollide(self.hero, self.enemy_group, True)        if len(enemies) > 0:            self.hero.kill()            PlaneGame.__game_over()

def __updtae_sprites(self):

self.bg_group.update()        self.bg_group.draw(self.screen)

self.enemy_group.update()        self.enemy_group.draw(self.screen)

self.hero_group.update()        self.hero_group.draw(self.screen)

self.hero.bullets.update()        self.hero.bullets.draw(self.screen)

@staticmethod    def __game_over():        print("游戏结束了")        pygame.quit()        exit()

if __name__ == ‘__main__‘:

# 创建游戏对象    game = PlaneGame()

# 启动游戏    game.start_game()
import pygameimport random

# 屏幕大小SCREEN_RECT = pygame.Rect(0, 0, 480, 700)# 刷新帧率FRAME_PER_SEC = 60# 创建敌机的定时器常量CREATE_ENEMY_EVENT = pygame.USEREVENT# 创建发射子弹事件常量HERO_FIRE_EVENT = pygame.USEREVENT + 1

class GameSprite(pygame.sprite.Sprite):

def __init__(self, image_name, speed=1):        super().__init__()        self.image = pygame.image.load(image_name)        self.rect = self.image.get_rect()        self.speed = speed

def update(self):        self.rect.y += self.speed

class BackGround(GameSprite):

def __init__(self, is_alt=False):        super().__init__("timg (1).jpg")        if is_alt:            self.rect.y = -self.rect.height

def update(self):        self.rect.y += self.speed        # self.speed += 0.0001        # 判断背景图片是否移出屏幕窗口        if self.rect.y > SCREEN_RECT.height:            self.rect.y = -self.rect.height

class Enemy(GameSprite):

def __init__(self):        super().__init__("aline222.png")        # 随机敌机的速度        self.speed = random.randint(2, 5)

# 随机敌机的水平位置        self.rect.x = random.randint(0, (SCREEN_RECT.width-self.rect.width))

def update(self):        super().update()        # 判断敌机是否移出屏幕        if self.rect.y > SCREEN_RECT.height:            print("飞出屏幕。。。")            # 将敌机从敌机精灵组中删除            self.kill()

def __del__(self):        print("删除敌机")

class Hero(GameSprite):    """英雄类"""

def __init__(self):        super(Hero, self).__init__("plane33.png", 0)        self.rect.centerx = SCREEN_RECT.centerx        self.rect.bottom = SCREEN_RECT.bottom - 80        self.bullets = pygame.sprite.Group()

def update(self):        self.rect.x += self.speed        if self.rect.x <= 0:            self.rect.x = 0        elif self.rect.x >= (SCREEN_RECT.width - self.rect.width):            self.rect.x = SCREEN_RECT.width - self.rect.width

def fire(self):        # 创建子弹精灵        bullet = Bullet()

# 设置子弹精灵的位置        bullet.rect.bottom = self.rect.y -5        bullet.rect.centerx = self.rect.centerx

# 将子弹精灵添加到子弹精灵组中去        self.bullets.add(bullet)

class Bullet(GameSprite):

def __init__(self):        super(Bullet, self).__init__(‘buleet6.png‘, -2)

def update(self):        super(Bullet, self).update()        if self.rect.y <= 0:            self.kill()
 

原文地址:https://www.cnblogs.com/Geek-/p/9951467.html

时间: 2024-11-02 15:02:49

用pyhton写了一个飞机大战的相关文章

无聊吗?写个【飞机大战】来玩吧(上篇)

01前言介绍 微信小游戏是基于微信客户端的游戏,它即点即玩,无需下载安装,体验轻便,可以和微信内的好友一起玩,比如PK.围观等,享受小游戏带来的乐趣.那如何开发一款属于自己的小游戏呢? 源码地址: https://github.com/A123asdo11/aircraft_war (新版ccc已无法正常使用,需要修复,文章作者花费了大量的时间和精力,在ccc2.0以上版本进行了修复,并在微信小游戏正常运行) 02微信小游戏飞机大战简介 1.大事记 经典飞机大战是腾讯交流软件微信5.0版本在20

500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手. 帮助蹲厕族.YP族.饭圈女孩在无聊之余可以有一样东西让他们振作起来!让他们的左手 / 右手有节奏有韵律的朝着同一个方向来回移动起来! 这是史诗级的发明,是浓墨重彩的一笔,是-- 在一阵抽搐后,我结束了游戏,瞬时觉得一切都索然无味,正在我进入贤者模式时,突然想到,如果我可以让更多人已不同的方式体会到这种美轮美奂的感觉岂不美哉? 所以我打开电脑,创建了一个 plan_game.py-- 先

无聊吗?写个【飞机大战】来玩吧(下篇)

上一篇介绍了如何使用cocos creator开发游戏,此篇是详细介绍功能点以及如何部署打包至微信小游戏体验. 资源管理制作 1.准备工具 cocos creatorv2.0.5官方最新版本.sublime tetx3或vscode.texturePackerGUI.微信小程序开发工具 2.sprite,图集资源制作 (1)图集列表类似于UI里的瀑布流图,将所有的.png .jpg .jpeg图片合并压缩为一个图集资源. (2)使用texturePackerGUI工具,打开工具,将本机示例图片文

android:“新版飞机大战”源代码开源啦!

今天10.24,为了纪念程序员的节日,把之前写过的一个"飞机大战"的一个源代码开源了. 源代码地址:https://github.com/nuptboyzhb/newplanegame 豌豆荚Demo:http://www.wandoujia.com/apps/edu.njupt.zhb.planegame 截图: ------------------------------------------------------------------- 更多交流,Android开发联盟QQ

cocos2dx 3.0 飞机大战

因为课程须要.然后又水平有限.所以写了个飞机大战.加上不会画画.所以图片资源也是从微信apk解压出来的,设计思路參考的偶尔e网事. 闲话不说.先讲一下设计.大体上一共分为3个场景.场景以下是Layer 開始场景:WelcomeScene -->WelcomeLayer  类似欢迎界面 游戏主场景:GameScene  --> GameLayer  游戏元素加入 和 碰撞检測 结束场景:GameOverScene -->GameOverLayer 然后是游戏的元素,在GameLayer加入

android:“新版飞机大战”源码开源啦!

今天10.24,为了纪念程序猿的节日,把之前写过的一个"飞机大战"的一个源码开源了. 源码地址:https://github.com/nuptboyzhb/newplanegame 豌豆荚Demo:http://www.wandoujia.com/apps/edu.njupt.zhb.planegame 截图: ------------------------------------------------------------------- 很多其它交流,Android开发联盟QQ

Java飞机大战源代码

刚学不久java,做了一个飞机大战的小小小小游戏,现在把这个思路总结以及代码分享出来.大佬别吐槽(emmmmmm .....开发环境:jdk1.7 开发工具:eclipese PlanelJPanel.java 1 package project02; 2 3 import java.awt.BasicStroke; 4 import java.awt.Color; 5 import java.awt.Cursor; 6 import java.awt.Font; 7 import java.a

pyinstaller相关问题 &amp; pygame文件打包成exe文件 &amp; 武装飞船 &amp; 飞机大战

自己照书写了一个飞机大战游戏的python程序,想把它打包成一个exe文件,在查阅相关教程并经过数次尝试后终于成功. 安装打包应用 pyinstaller 在cmd命令窗口下pip install pyinstaller,安装完成. 但是由于外国的网站比较慢所以可以利用镜像来进行安装 pip install pyinstaller -i https://pypi.douban.com/simple 注意是使用https,不是http.因为https才是安全信任的网站 在cmd中输入pyinsta

android:如何用一天时间,写出“飞机大战”这样的游戏!(无框架-SurfaceView绘制)

序言作为一个android开发者,时常想开发一个小游戏娱乐一下大家,今天就说说,我是怎么样一天写出一个简单的"飞机大战"的.体验地址:http://www.wandoujia.com/apps/edu.njupt.zhb.planegame游戏分析玩过"飞机大战"游戏的都知道,飞机大战中的主要"角色"有:1.玩家飞机2.敌方飞机3.玩家飞机发送的子弹4.敌方Boss飞机发送的子弹我们需要控制的有:1.绘制屏幕内的角色2.控制角色的逻辑,比如:敌方