经慎重考虑
为酬报广大读者的关注
小编决定做一系列python小游戏的内容
以回报大家的关注
第一弹!
相信手机FlappyBird小游戏大家都玩过吧
啥?没玩过?
诺~就是这个游戏啦
第一期就跟大家分享一下
python简版FlappyBird游戏
配置环境
pygame
python3.6/3.7
安装方法
小编用的anaconda和spyder编译
但是在anaconda里并没有找到pygame这个包
所以介绍另一个安装pygame的方法:
1.打开prompt命令终端
2.输入conda install pygame
如果显示没有可用的package
那么输入神秘代码
anaconda search -t conda pygame
选择你要安装的版本输入
conda install --channel https://conda.anaconda.org/加版本名称
激动人心的代码时间
首先要有只鸟(定义一个brid类)
# Bird类
class Bird(pygame.sprite.Sprite):
def __init__(self, HEIGHT, WIDTH):
pygame.sprite.Sprite.__init__(self)
# 基准
self.ori_bird = pygame.image.load("./resources/images/bird.png")
# 显示用
self.rotated_bird = pygame.image.load("./resources/images/bird.png")
self.rect = self.rotated_bird.get_rect()
# 游戏界面宽高
self.HEIGHT = HEIGHT
self.WIDTH = WIDTH
# 角度
self.angle = 0
self.max_angle = 15
# 速度
self.angle_speed = 300
self.down_speed = 300
self.jump_speed = 150
# 当前跳跃的高度
self.cur_jump_height = 0
# 当前跳跃高度到达该阈值时小鸟完成一次跳跃
self.jump_height_thresh = 8
# 是否跳跃
self.is_jump = False
# 位置信息
self.x = 150
self.y = (self.HEIGHT - self.ori_bird.get_height()) / 2
self.set_bird()
这个鸟类里定义了一些基本界面属性
以及确定鸟的位置和判断鸟是否死亡
当玩家按下空格键时,小鸟向上跳跃
否则,小鸟就会下坠
管道类,也就是障碍物
class Pipe():
def __init__(self, HEIGHT, WIDTH):
self.HEIGHT = HEIGHT
self.WIDTH = WIDTH
self.max_pipe_body = (self.HEIGHT - 2 * pipeHead().height) // pipeBody().height
self.interspace = 8
self.n_up_pipe_body = random.randint(0, self.max_pipe_body-self.interspace)
self.n_down_pipe_body = self.max_pipe_body - self.interspace - self.n_up_pipe_body
self.x = 600
self.speed = 100
self.add_score = False
self.construct_pipe()
管道包含管道头和管道体两部分
一个管道头和若干管道体组成一个障碍
小鸟需要不断跳跃以穿过障碍物
通过不断更新管道位置
来达到小鸟不断前进的效果
游戏的主体部分就比较简单了
import Bird
import Pipe
import pygame
from pygame.locals import *
# 定义一些常量
640, 480 =
# 主函数
def main():
# 初始化
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32)
Charles的皮卡丘') :
# 载入图片
background_img = pygame.image.load("./resources/images/background.png")
gameover_img = pygame.image.load("./resources/images/gameover.png")
# 载入音乐
jump_sound = pygame.mixer.Sound("./resources/audios/安卓/jump.wav")
jump_sound.set_volume(6)
pygame.mixer.music.load('./resources/audios/安卓/moonlight.wav')
0.0)
pygame.mixer.music.set_volume(12)
# 载入字体
font = pygame.font.Font("./resources/fonts/simkai.ttf", 24)
# 时钟
clock = pygame.time.Clock()
# 小鸟
bird = Bird.Bird(HEIGHT, WIDTH)
# 管道
pipes = []
# 时间
time0 = 0
time_interval = 2
# 分数
SCORE = 0
running = True
先显示游戏布景
然后根据玩家的操作更新小鸟位置
自动更新管道位置
并通过碰撞检测以及小鸟的纵坐标
来判断游戏是否结束
最终计算管道数量显示玩家分数
最终效果:
是不是很有意思!
走过路过不要错过
如果觉得本文对您有所帮忙
记得点一下右下角的"好看"!
也不枉小编中秋假期肝到吐血
代码获取请移步留言区