Python 游戏编程之实现飞机大战(含源代码)
文章插图
来源:逐梦er
不知道大家有没有打过飞机,喜不喜欢打飞机 。 当我第一次接触这个东西的时候,我的内心是被震撼到的 。 第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每次都会下意识彼此较量一下,看谁打得更好 。 打飞机也是需要有一定的技巧的,熟练的朋友一把能打上半个小时,生疏的则三五分钟就败下阵来 。
那么怎么实现自己的打飞机游戏?下面就跟大家一起来动手实现打飞机游戏 。 全部源代码见文末链接 。
一.游戏设定游戏界面如下图所示:
文章插图
文章插图
游戏的基本设定:
- 敌方共有大中小3款飞机 , 分为高中低三种速度;
- 子弹的射程并非全屏,而大概是屏幕长度的80%;
- 消灭小飞机需要1发子弹,中飞机需要8发,大飞机需要20发子弹;
- 每消灭一架小飞机得1000分,中飞机6000分,大飞机10000分;
- 每隔30秒有一个随机的道具补给,分为两种道具 , 全屏炸弹和双倍子弹;
- 全屏炸弹最多只能存放3枚,双倍子弹可以维持18秒钟的效果;
- 游戏将根据分数来逐步提高难度,难度的提高表现为飞机数量的增多以及速度的加快 。
这个游戏加上基本的注释代码量在800行左右,代码看上去比较多 , 多打代码少动脑 。 所以大家不要怕,越是多的代码,逻辑就越容易看得清楚 , 就越好学习 。 好,那让我们从无到有,从简单到复杂来一起打造这个游戏吧!
二.我方飞机首先创建一个myplane. py模块来定义我方飞机:
import pygame
class MyPlane(pygame.sprite.Sprite):
def __init__(self, bg_size):
pygame.sprite.Sprite.__init__(self)
self.image1 = pygame.image.load("images/me1.png").convert_alpha
self.image2 = pygame.image.load("images/me2.png").convert_alpha
self.destroy_images =
self.destroy_images.extend([\
pygame.image.load("images/me_destroy_1.png").convert_alpha(), \
pygame.image.load("images/me_destroy_2.png").convert_alpha(), \
pygame.image.load("images/me_destroy_3.png").convert_alpha(), \
pygame.image.load("images/me_destroy_4.png").convert_alpha() \
])
self.rect = self.image1.get_rect
self.width, self.height = bg_size[0], bg_size[1]
self.rect.left, self.rect.top = \
(self.width - self.rect.width) // 2, \
self.height - self.rect.height - 60
self.speed = 10
self.active = True
self.invincible = False
self.mask = pygame.mask.from_surface(self.image1)
# 分别定义moveUp、moveDown、moveLeft和moveRight控制我方飞机上、下、左、右移动:
def moveUp(self):
if self.rect.top > 0:
self.rect.top -= self.speed
else:
self.rect.top = 0
def moveDown(self):
if self.rect.bottom < self.height - 60:
self.rect.top += self.speed
else:
self.rect.bottom = self.height - 60
def moveLeft(self):
if self.rect.left > 0:
self.rect.left -= self.speed
else:
self.rect.left = 0
def moveRight(self):
if self.rect.right < self.width:
self.rect.left += self.speed
else:
self.rect.right = self.width
def reset(self):
self.rect.left, self.rect.top = \
(self.width - self.rect.width) // 2, \
self.height - self.rect.height - 60
self.active = True
self.invincible = True
三.敌方飞机既然英雄已经有了,那现在就是需要创造敌人的时候 。 敌机分为小、中、大三个尺寸,它们的速度依次是快、中、慢,在游戏界面的上方位置创造位置随机的敌机,可以让它们不在同一排出现 。 将敌机的定义写在enemy. py模块中:
import pygame
from random import *
class SmallEnemy(pygame.sprite.Sprite):
def __init__(self, bg_size):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("images/enemy1.png").convert_alpha
- 王储|壹周游闻第20期:直播打赏实行实名制;沙特王储收购SNK
- 环境|环境标识认知转盘游戏
- realme X|手机打游戏太卡?行家:那是你还没换这几款
- Play|Google Play公布2020年度最佳应用和游戏排行榜
- 第一款骁龙888游戏手机:红魔6官宣
- 告诉|阿里大佬告诉你如何一分钟利用Python在家告别会员看电影
- Python源码阅读-基础1
- Linux(服务器编程):百万并发服务器系统参数调优
- Python调用时使用*和**
- 如何基于Python实现自动化控制鼠标和键盘操作