python仿写print_python 仿写飞翔的小鸟,附带源码

在写飞翔的小鸟游戏前,要用到pygame这个模块。pygame是一个利用SDL库(全名Simple DirectMedia Layer)写就的游戏库。可以用pip3 install pygame命令来安装pygame。也可在pycharm中安装

pycharm安装方式:File –>setting

python仿写print_python 仿写飞翔的小鸟,附带源码

安装完成后就可以使用pygame模块进行游戏的编写

需导入的模块

import pygame # pygame模块

import sys # sys模块

import random # 随机数模块

首先实现将游戏窗口画出来,将背景加载到游戏窗口中

第一步:实现游戏窗口

SCREEN_WIDTH = 600

SCREEN_HEIGHT = 400

初始化操作

pygame.display.init()

创建窗口

window = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

设置菜单栏上的游戏名称

pygame.display.set_caption(‘会飞的小超人’)

加载背景图

beijing = pygame.image.load(‘img/beijing.jpg’).convert_alpha()

beijing = pygame.transform.scale(beijing, (800, 600))

while True:

pygame.init()

添加背景

window.blit(beijing, (0, 0))

第二步、加载小鸟图片(这里为了有趣,我用了超人代替)

加载图片

bird = pygame.image.load(‘img/bird.png’)

位置

top = (SCREEN_HEIGHT – 50)/2

bird_rect = bird.get_rect(left=150, top=top)

while True:

pygame.init()

加载小鸟

window.blit(bird, bird_rect)

让程序每10毫秒执行一次

pygame.time.wait(10)

pygame.display.update()

第三步:

1、完成时间的处理,点击关闭按钮事件,按键事件

2、实现小鸟移动,上升,下降

while True:

pygame.init()

为窗口填充颜色

window.blit(beijing, (0, 0))

加载小鸟

window.blit(bird, bird_rect)

v1.2 小鸟的移动处理

bird_speed += 0.2

bird_rect = bird_rect.move(0,bird_speed)

新增事件处理

event_list = pygame.event.get()

for e in event_list:

if e.type == pygame.QUIT:

print(‘退出程序’)

sys.exit()

事件类型 按键按下事件

elif e.type == pygame.KEYDOWN:

点击的按键为 空格 的触发

if e.key == pygame.K_SPACE:

print(‘按下空格键’)

bird_speed = -6

第四步:

实现障碍物的加载和移动

存储所有柱子的列表

pillar_list = []

v1.3 每间隔3秒,生成一次障碍物

获取当前的系统时间

end_time = pygame.time.get_ticks()

if end_time – start_time >= 3000:

print(‘生成一次障碍物’)

start_time = end_time

x = 500

y = 0

width = 50

height = random.randint(30, 150)

障碍物的矩形区域

pillar_rect_top = pygame.rect.Rect(x,y,width,height)

将生成的障碍物存储到列表中

pillar_list.append(pillar_rect_top)

v1.3 将所有障碍物加载出来

for p in pillar_list:

window.fill(COLOR_GREEN,p)

v1.3 所有障碍物的移动

for p in pillar_list:

if p.x > 0:

p.x -= 1

else:

pillar_list.remove(p)

print(f’删除一个障碍物,剩余障碍物{len(pillar_list)}’)

第五步:处理小鸟的死亡

处理小鸟的死亡

for p in pillar_list:

if p.colliderect(bird_rect):

is_over = True

if bird_rect.y > SCREEN_HEIGHT – bird_rect.height or bird_rect.y < 0:

is_over = True

小鸟死亡事件

if is_over and e.key == pygame.K_SPACE:

小鸟回到初始位置

bird_rect = bird.get_rect(left=150, top=top)

速度清空

bird_speed = 1

分数清空

score = 0

障碍物清空

pillar_list.clear()

is_over 状态改变

is_over = False

第六步,统计分数,处理结束画面

得分计算:

for p in pillar_list:

if p.x < bird_rect.x and p.y > bird_rect.y:

score += 1

if score > height_score(FILE_NAME):

score_w = open(FILE_NAME, ‘w’, encoding=’utf-8′)

score_w.write(str(score))

score_w.close()

else:

pass

处理结束画面

设置字体

font = pygame.font.SysFont(“arial”, 30)

font1 = pygame.font.SysFont(“arial”, 20)

设置显示内容和颜色

fail_text = font.render(‘GAME OVER !’, True, COLOR_RED)

score_text = font.render(f’SCORE:{score}’, True, COLOR_RED)

score_text1 = font1.render(f’SCORE:{score}’, True, COLOR_RED)

height_text = font1.render(f’HIGH_SCORE: {height_score(FILE_NAME)}’, True, COLOR_RED)

设置显示位置

text_width, text_height = 200, 100

score_width, score_height = 200, 100

score_text1_width, score_text1_height = 100, 50

fail_rect = pygame.Rect((SCREEN_WIDTH – text_width) / 2,

(SCREEN_HEIGHT – text_height) / 2 – 30,

text_width, text_height)

score_rect = pygame.Rect((SCREEN_WIDTH – text_width) / 2 + 25,

(SCREEN_HEIGHT – text_height) / 2,

score_width, score_height)

time_score_rect = pygame.Rect(0, 0, score_text1_width, score_text1_height)

显示当前成绩,和 最高分

window.blit(score_text1, time_score_rect)

window.blit(height_text, (SCREEN_WIDTH / 2, 0))

第七步: 数据持久化,将最高分存入文件,每次游戏开始读取

记录分数功能

def height_score(FILE_NAME):

if os.path.exists(FILE_NAME):

f = open(FILE_NAME, ‘r’, encoding=’utf-8′)

最高分从文件中读取

height_score1 = f.read()

if len(height_score1) > 0:

height_score = int(height_score1)

else:

f = open(FILE_NAME, ‘w’, encoding=’utf-8′)

height_score = 0

f.close()

else:

f = open(FILE_NAME, ‘w’, encoding=’utf-8′)

height_score = 0

return height_score

最终效果:

python仿写print_python 仿写飞翔的小鸟,附带源码

源码:百度盘: 飞翔的小鸟:https://pan.baidu.com/s/1AB7sioRIQu63vJydxFZqqw 提取码:hrwl

这篇飞翔的小鸟没有用到面向对象编程,针对面向过程实现(主要我学习的内容还没有学到面向对象),继续奋斗,加油!!!

Original: https://blog.csdn.net/weixin_27722377/article/details/114414849
Author: 抖抖村
Title: python仿写print_python 仿写飞翔的小鸟,附带源码

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/782807/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python数据分析案例10——北向资金流入与沪深300涨跌幅分析

    博主本科是学投资的,最近看了b站邢不行up主的一些量化策略视频,和自己本科毕业论文很像,便想自己也来做一下这个实操的项目。 案例背景 北向资金是从中国最南方——中国香港流入内陆的资…

    Python 2023年8月17日
    090
  • Web3中文|AI机器人ChatGPT如何看待DeFi?

    如果还没有玩过OpenAI最新的聊天机器人ChatGPT,那您真的应该体验一下。 从电影推介到编程查询,ChatGPT几乎可以对您向它提出的任何提示做出类似人类的逻辑响应。这种新奇…

    Python 2023年11月4日
    044
  • PyCharm 这40个使用技巧真棒

    大家好,今天分享 PyCharm 40个使用技巧,欢迎收藏、分享、点赞。 废话不多说。我们开始吧! 第一章:运行调试篇 1. 通过指定参数,执行程序 你在 Pycharm 运行你的…

    Python 2023年8月2日
    066
  • 一些用matplotlib和seaborn画图调整参数的方法

    Seaborn画图调整图中散点和线的属性方法: 调整matplotlib坐标轴刻度标签字体大小和XY标签字体大小的方法: 调整sns画图中标签字体大小方法: sns.pairplo…

    Python 2023年9月1日
    056
  • Docker(六)docker-compose的使用

    docker-compose是一个单机情况下的编排工具 通过yml文件定义多个容器 默认名字叫docker-compose.yml 三个概念,Service Networks Vo…

    Python 2023年8月15日
    046
  • 两本让你在游戏中就可以学会Python的书籍

    都说学编程是一个无聊且漫长艰辛的过程,很多小伙伴学着学着就放弃了,实在枯燥无味还不易懂。现在很多年轻的同学无论是手游还是端游都会玩一点吧。还在整天打游戏吗??有时间不如去学一下游戏…

    Python 2023年9月21日
    046
  • 微服务网关Gateway实践总结

    有多少请求,被网关截胡; 一、Gateway简介 微服务架构中,网关服务通常提供动态路由,以及流量控制与请求识别等核心能力,在之前的篇幅中有说过Zuul组件的使用流程,但是当下Ga…

    Python 2023年10月23日
    029
  • 关于2021年个人公众号总结

    兜兜转转,又过了一年,2022年来了,自己又老了一岁,娃也长大了一岁,无聊的年底迎来了一波又一波的数字化考核,假的让人瞠目结舌。人生啊,处于上有老下有小的境地,工作呢,在甲乙丙丁戊…

    Python 2023年8月15日
    037
  • 一个傻瓜式构建可视化 web的 Python 神器 — streamlit 教程

    正常在学习一个新框架之前, 肯定要先调研下这个框架究竟能做些什么事吧? 但对于 streamlit 来说,请你相信我,这是一个你可以无脑去学习的框架,我之所以这么说,是因为我相信终…

    Python 2023年8月13日
    048
  • python画鱼_Python 水母吃鱼游戏 pygame

    【实例简介】 学习 pygame 自己写的个小游戏; F1 -添加鱼, 方向箭头移动水母吃鱼。 缺点: 鱼的移动不太自然,需要改进! 【实例截图】 【核心代码】 运行环境: pyt…

    Python 2023年9月15日
    044
  • python中defaultdict用法详解

    defaultdict底层代码: 在字典中查找某个值时,若key不存在时则会返回一个KeyError错误而不是一个默认值,这时候可以使用defaultdict函数。 注意:使用di…

    Python 2023年8月2日
    040
  • 解决Scrapy ImagesPipeline无法将爬取到的图片保存到指定路径的问题

    项目场景: Scrapy ImagesPipeline对图片进行爬取 问题描述: Scrapy ImagesPipeline对图片进行爬取无法存入本地,运行结果中出现类似下面的代码…

    Python 2023年10月2日
    034
  • 索引优化

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 弹尽粮绝,会员救园:…

    Python 2023年10月22日
    034
  • 【Linux】Linux下调试器gdb的使用

    ### 回答1: 在 Linux_中 _使用 gdb_调试的步骤如下: 1. 编译程序时需要加上-g选项,以便在调试时能够获取到符号表信息。 2. 在终端中输入 _gdb_命令,进…

    Python 2023年11月7日
    047
  • 【AMD GPU】使用A卡进行ai模型训练

    rocm都更新这么多版本了怎么还没有windows的~~##RX580用户看过来rocm4.0版本后就不支持RX580了,垃圾AMD linux:Ubuntu20.04.1CPU:…

    Python 2023年9月27日
    0183
  • 创客系列教程——认识LED灯

    认识LED灯 一、初识LED灯 LED&#x706F;是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED灯逐步融入到生活中的方方面面:室内外的照…

    Python 2023年6月16日
    058
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球