IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> python编写呆呆小鸟游戏 -> 正文阅读

[游戏开发]python编写呆呆小鸟游戏

####################引用数据库与函数######################
import pygame
from random import randrange
pygame.init()
from time import sleep

######################定义变量###########################
frame = 0  #当前在0帧处
map_width = 284
map_height = 512 #因为图片大小是284*512的
FPS = 60
pipes = [[200,4]]
bird = [40,map_height//2-50]
gravity = 0.2
velocity = 0

gameScreen = pygame.display.set_mode((map_width,map_height))
clock = pygame.time.Clock()
bird_wing_up = bird_wing_up_copy = pygame.image.load("images/bird_wing_up.png")
bird_wing_down = bird_wing_down_copy =  pygame.image.load("images/bird_wing_down.png")
background = pygame.image.load("images/background.png")
pipe_body = pygame.image.load("images/pipe_body.png")
pipe_end = pygame.image.load("images/pipe_end.png")


#######################定义函数##########################
def draw_pipes():
    global pipes
    for n in range(len(pipes)):
        for m in range(pipes[n][1]):
            gameScreen.blit(pipe_body,(pipes[n][0],m*32))#一个小管子的高度是32
        for m in range(pipes[n][1]+6,16):
            gameScreen.blit(pipe_body, (pipes[n][0], m * 32))
        gameScreen.blit(pipe_end,(pipes[n][0],pipes[n][1] * 32))
        gameScreen.blit(pipe_end,(pipes[n][0],(pipes[n][1]+5) * 32))
        pipes[n][0] -= 1
def draw_bird(x,y):
    global frame
    if 0<= frame < 30:
        gameScreen.blit(bird_wing_up, (x, y))
        frame += 1
    elif 30<= frame <=60:
        gameScreen.blit(bird_wing_down, (x, y))
        frame += 1
        if frame == 60:
            frame = 0

def safe():
    if bird[1]>map_height-35:
        print('you die ! fw')
        return False
    if bird[1] < 0:
        print('you die ! fw')
        return False
    if pipes[0][0]-30 < bird[0] < pipes[0][0]+79 :
        if bird[1]<(pipes[0][1]+1)*32 or bird[1]>(pipes[0][1]+4)*32:
            print("You  die ! fw")
            return False
    return True


def reset():
    global bird,velocity, gravity, bird_wing_down, bird_wing_up, frame, map_width, map_height, FPS, pipes
    frame = 0  # 当前在0帧处
    map_width = 284
    map_height = 512  # 因为图片大小是284*512的
    FPS = 60
    pipes.clear()
    bird.clear()
    pipes = [[200, 4]]
    bird = [40, map_height // 2 - 50]
    gravity = 0.2
    velocity = 0

def gameLoop():
    while True:
        global velocity,gravity,bird_wing_down,bird_wing_up
        if len(pipes)<4:
            x = pipes[-1][0]+200
            open_pos = randrange(1,9)
            pipes.append([x,open_pos])
        if pipes[0][0]< -100 :
            pipes.pop(0)
        for event in pygame.event.get():  #记录用户所有的操作
            if event.type == pygame.KEYDOWN:
                bird[1] -= 40
                velocity = 0
            if event.type == pygame.QUIT:
                pygame.quit()
                return
        velocity += gravity
        bird[1]+= velocity
        bird_wing_down = pygame.transform.rotate(bird_wing_down_copy,-90*(velocity/15))
        bird_wing_up= pygame.transform.rotate(bird_wing_up_copy, -90*(velocity/ 15))
        gameScreen.blit(background, (0, 0))  # blit:位块传送
        draw_pipes()
        draw_bird(bird[0],bird[1])#↓→为正
        pygame.display.update()
        if not safe():
            sleep(3)
            reset()
        clock.tick(FPS)

#######################主程序##########################
gameLoop()
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:55:20  更:2021-11-12 19:56:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 0:31:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码