Python飞机大战小游戏 您所在的位置:网站首页 简单飞机子弹大小 Python飞机大战小游戏

Python飞机大战小游戏

2023-12-17 01:04| 来源: 网络整理| 查看: 265

文章目录 Python飞机大战1. 导包2. 子弹类3. 玩家飞机类4. 发射子弹的函数5. 操控飞机移动的4个函数6. 敌机类7. 资源初始化及参数配置8. 游戏主循环10. 静态资源获取11. 更多干货分享(免费) 在这里插入图片描述

今天给大家免费分享一下Python飞机游戏的源码。 在这里插入图片描述

Python飞机大战 (声明:源码来源于网络,具体在哪搞的记不太清了,好像是17年的时候用下载币倒腾来的)

在此之前首先说一下环境 Python3.X (使用2.x的大佬自己稍微改动一下就行) pygame 1.9.6(当然这个没必要和我一样)

1. 导包 #-*- coding: utf-8 -*- import pygame from sys import exit from pygame.locals import * import random # 设置游戏屏幕大小 SCREEN_WIDTH = 480 SCREEN_HEIGHT = 800 2. 子弹类 # 子弹类 class Bullet(pygame.sprite.Sprite): def __init__(self, bullet_img, init_pos): pygame.sprite.Sprite.__init__(self) self.image = bullet_img self.rect = self.image.get_rect() self.rect.midbottom = init_pos self.speed = 10 def move(self): self.rect.top -= self.speed 3. 玩家飞机类 # 玩家飞机类 class Player(pygame.sprite.Sprite): def __init__(self, plane_img, player_rect, init_pos): pygame.sprite.Sprite.__init__(self) self.image = [] # 用来存储玩家飞机图片的列表 for i in range(len(player_rect)): self.image.append(plane_img.subsurface(player_rect[i]).convert_alpha()) self.rect = player_rect[0] # 初始化图片所在的矩形 self.rect.topleft = init_pos # 初始化矩形的左上角坐标 self.speed = 8 # 初始化玩家飞机速度,这里是一个确定的值 self.bullets = pygame.sprite.Group() # 玩家飞机所发射的子弹的集合 self.is_hit = False # 玩家是否被击中 4. 发射子弹的函数 # 发射子弹 def shoot(self, bullet_img): bullet = Bullet(bullet_img, self.rect.midtop) self.bullets.add(bullet) 5. 操控飞机移动的4个函数 # 向上移动,需要判断边界 def moveUp(self): if self.rect.top = SCREEN_HEIGHT - self.rect.height: self.rect.top = SCREEN_HEIGHT - self.rect.height else: self.rect.top += self.speed # 向左移动,需要判断边界 def moveLeft(self): if self.rect.left = SCREEN_WIDTH - self.rect.width: self.rect.left = SCREEN_WIDTH - self.rect.width else: self.rect.left += self.speed 6. 敌机类 # 敌机类 class Enemy(pygame.sprite.Sprite): def __init__(self, enemy_img, enemy_down_imgs, init_pos): pygame.sprite.Sprite.__init__(self) self.image = enemy_img self.rect = self.image.get_rect() self.rect.topleft = init_pos self.down_imgs = enemy_down_imgs self.speed = 2 # 敌机移动,边界判断及删除在游戏主循环里处理 def move(self): self.rect.top += self.speed 7. 资源初始化及参数配置 # 初始化 pygame pygame.init() # 设置游戏界面大小、背景图片及标题 # 游戏界面像素大小 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) # 游戏界面标题 pygame.display.set_caption('Python打飞机大战') # 背景图 background = pygame.image.load('resources/image/background.png').convert() # Game Over 的背景图 game_over = pygame.image.load('resources/image/gameover.png') # 飞机及子弹图片集合 plane_img = pygame.image.load('resources/image/shoot.png') # 设置玩家飞机不同状态的图片列表,多张图片展示为动画效果 player_rect = [] player_rect.append(pygame.Rect(0, 99, 102, 126)) # 玩家飞机图片 player_rect.append(pygame.Rect(165, 234, 102, 126)) # 玩家爆炸图片 player_pos = [200, 600] player = Player(plane_img, player_rect, player_pos) # 子弹图片 bullet_rect = pygame.Rect(1004, 987, 9, 21) bullet_img = plane_img.subsurface(bullet_rect) # 敌机不同状态的图片列表,包括正常敌机,爆炸的敌机图片 enemy1_rect = pygame.Rect(534, 612, 57, 43) enemy1_img = plane_img.subsurface(enemy1_rect) enemy1_down_imgs = plane_img.subsurface(pygame.Rect(267, 347, 57, 43)) #存储敌机,管理多个对象 enemies1 = pygame.sprite.Group() # 存储被击毁的飞机 enemies_down = pygame.sprite.Group() # 初始化射击及敌机移动频率 shoot_frequency = 0 enemy_frequency = 0 # 初始化分数 score = 0 # 游戏循环帧率设置 clock = pygame.time.Clock() # 判断游戏循环退出的参数 running = True 8. 游戏主循环 # 游戏主循环 while running: # 控制游戏最大帧率为 60 clock.tick(60) # 生成子弹,需要控制发射频率 # 首先判断玩家飞机没有被击中 # 循环15次发射一个子弹 if not player.is_hit: if shoot_frequency % 15 == 0: player.shoot(bullet_img) shoot_frequency += 1 if shoot_frequency >= 15: shoot_frequency = 0 # 生成敌机,需要控制生成频率 # 循环50次生成一架敌机 if enemy_frequency % 50 == 0: enemy1_pos = [random.randint(0, SCREEN_WIDTH - enemy1_rect.width), 0] enemy1 = Enemy(enemy1_img, enemy1_down_imgs, enemy1_pos) enemies1.add(enemy1) enemy_frequency += 1 if enemy_frequency >= 100: enemy_frequency = 0 for bullet in player.bullets: # 以固定速度移动子弹 bullet.move() # 移动出屏幕后删除子弹 if bullet.rect.bottom


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有