python游戏开发之小乌龟逃离鲨海
主要需求
- 当游戏开始时,提示信息应该显示如何开始游戏(按回车键,按空格键等)。
- 对象以图像的形式显示在屏幕上(而不是点或矩形)
- 对象使用字典表示。
- 屏幕应为300 x 300,并有背景图像。
- 玩家从屏幕底部开始,通过按箭头键改变位置
- 伤害角色不断地在屏幕上移动,当离开边缘时循环回到相反的一边。
- 比赛以3次生命和0分开始。(但在测试时将其设置为1)
- 当伤害与玩家发生碰撞时,游戏生命值应该减少1,玩家应该在屏幕底部重新开始。
- 分数,生命和等级应该显示在屏幕上。
- 从level = 1开始,并在每次用户到达目的地时增加级别。
- 物体的速度应该随着关卡的增加而增加
- 当生命值减少到0时,游戏(和循环)应该结束,并显示game Over消息。
演示视频:
乌龟过河小游戏
主要代码结构目录:
turtlegame.py
# main.pyimport timefrom turtle import Screenfrom player import Playerfrom car_manager import CarManagerfrom scoreboard import Scoreboard# flag用来标记是否按下空格
flag = False# 按下空格对应的处理函数
def start():global flagflag = True# 初始化窗体
screen = Screen()# 窗体宽高
screen.setup(width=300, height=300)screen.tracer(0)# 引入背景图片
screen.bgpic("background.gif")# 引入“车”图片
screen.register_shape("shark.gif")# 引入乌龟图片
screen.register_shape("turtle.gif")# 定义玩家(乌龟)
player = Player()# 车队列
cars=[]# 当前车速
carspeednow = 0.1# 初始化车类
car = CarManager(carspeednow)# 加入车队列
cars.append(car)# 初始化得分面板
scoreboard = Scoreboard()# 监听窗体
screen.listen()# 窗体标题
screen.title("按空格开始")# 窗体监听的按钮
screen.onkey(start, "space")screen.onkey(player.move_up, "Up")screen.onkey(player.move_left, 'Left')screen.onkey(player.move_right, 'Right')# 计数器
count = 0# 游戏是否结束
game_is_on = Truewhile game_is_on:count += 1print(car.carspeed)# 用来更新不同等级的车速time.sleep(car.carspeed)screen.update()# 未按空格车不走if flag == False:continue# 20个单位来一个新车if count % 20 == 0:car = CarManager(carspeednow)cars.append(car)#print(cars[0].carspeed)# 移动车for car in cars:car.move()# 碰撞且无多一条命,游戏结束if player.distance(car) < 20 and scoreboard.times == 1:print("Collison, Died!")game_is_on = Falsescoreboard.gameover()screen.exitonclick()# 碰撞,但生命值还有剩余elif player.distance(car) < 20 and scoreboard.times > 1:print("Collison, times minus 1!")player.restart()scoreboard.lifeminus()# 过关if player.ycor() >= 120:player.restart()# 升级scoreboard.levelup()# 车速加快carspeednow *= 0.8# 左越界处理if player.xcor() < -130:#print("Finally!")player.right()# 右越界处理if player.xcor() > 130:player.left()#print(cars[0].carspeed)#screen.exitonclick()
scoreboard.py:
#scoreboard.pyfrom turtle import Turtle# 字体大小
FONT = ("Courier", 12, "normal")class Scoreboard(Turtle):def __init__(self):super().__init__()self.penup()self.hideturtle()self.color("Black")# 当前等级self.level = 1# 当前生命值self.times = 3# 当前得分self.score = 0self.update_level()self.update_times()self.update_score()# 更新得分def update_score(self):self.goto(0,120)self.write(f"分数:{self.score}", align='Center', font = FONT)# 更新等级def update_level(self):self.goto(-100,120)self.write(f"等级:{self.level}", align='Center', font = FONT)# 更新生命值def update_times(self):self.goto(100, 120)self.write(f"生命值:{self.times}", align='Center', font = FONT)# 游戏结束显示def gameover(self):self.goto(0,0)self.write("GAME OVER", align='Center', font=FONT)# 升级处理def levelup(self):self.level += 1self.score += 10self.clear()self.update_level()self.update_times()self.update_score()# 生命值减小处理def lifeminus(self):self.times -= 1self.clear()self.update_level()self.update_times()self.update_score()
car_manager.py
# car_manager.pyfrom turtle import Turtleimport random#COLORS = ["red", "orange", "yellow", "green", "blue", "purple"]# 移动位置和增量设置
STARTING_MOVE_DISTANCE = 5MOVE_INCREMENT = 10class CarManager(Turtle):def __init__(self, _carspeed):super().__init__()#self.color(random.choice(COLORS))# 导入“车”图片self.shape("shark.gif")self.shapesize(stretch_len=1, stretch_wid=1)self.setheading(180)self.penup()self.goto(130, random.randint(-3, 3) * 30)self.carspeed = _carspeed# ”车”移动def move(self):self.forward(STARTING_MOVE_DISTANCE)#def speedup(self):#self.carspeed /= 10
player.py
#player.pyfrom turtle import Turtle# 乌龟起点
STARTING_POSITION = (0, -120)#RIGHT_POSITION = ()#LEFT_POSITION# 移动举例
MOVE_DISTANCE = 30# 终点线
FINISH_LINE_Y = 140class Player(Turtle):def __init__(self):super().__init__()# 导入乌龟图self.shape("turtle.gif")#self.color("black")self.penup()self.goto(STARTING_POSITION)self.setheading(90)# 乌龟上移def move_up(self):self.setheading(90)print(self.xcor(), self.ycor())self.forward(MOVE_DISTANCE)print(self.xcor(),self.ycor())# 乌龟左移def move_left(self):self.setheading(180)print(self.xcor(), self.ycor())self.forward(MOVE_DISTANCE)print(self.xcor(),self.ycor())# 乌龟右移def move_right(self):self.setheading(0)print(self.xcor(), self.ycor())self.forward(MOVE_DISTANCE)print(self.xcor(),self.ycor())# 乌龟回来起点def restart(self):self.goto(STARTING_POSITION)self.setheading(90)# 乌龟左越界def right(self):self.goto((130, self.ycor()))self.setheading(180)# 乌龟右越界def left(self):self.goto((-130, self.ycor()))#self.goto(STARTING_POSITION)self.setheading(0)
总结:
1.图片的引用需要转为gif,注意固定的像素大小
2.init函数用__init__()
python游戏开发之小乌龟逃离鲨海相关推荐
- python游戏开发的五个案例分享
本文给大家分享了作者整理的五个python游戏开发的案例,通过具体设计思路,代码等方面详细了解python游戏开发的过程,非常的详细,希望大家能够喜欢 一.序列应用--猜单词游戏 1. 游戏介绍 猜单 ...
- 师傅带徒弟学:Python游戏开发引擎cocos2d-python-关东升-专题视频课程
师傅带徒弟学:Python游戏开发引擎cocos2d-python-299人已学习 课程介绍 Python语言之所以受欢迎,很大的原因是有很多可以使用的库,Python社区也有很多游戏 ...
- 小学生python游戏开发pygame5--title地图调用
小学生python游戏开发pygame5--title地图调用 前言 文件夹目录 pytmx模块安装 实现效果 代码实现 前言 文件夹目录 pytmx模块安装 实现效果 代码实现 import log ...
- python 游戏开发_Python游戏开发入门
spContent=--玩游戏的最高境界是什么? --当然是设计一款属于自己的游戏! --设计游戏不是目的,从游戏看道理,从道理看人生,人生何尝不是属于自己的游戏? --"弹指之间·享受创新 ...
- 32岁学python有前途吗_Python发展前景如何?学习Python游戏开发有前途吗?
Python发展前景如何?学习Python游戏开发有前途吗? 时间:2018-04-02 15:48:31 | 来源:千锋教育 | 作者:alents 学习Python的人都知道一句话:人生苦短,我用 ...
- python游戏开发的第三方库有哪些_Python 游戏开发方向的第三方库是
Python 游戏开发方向的第三方库是 答:Pygame 内分泌器官包括( ) 答:甲状腺 松果体 甲状旁腺 垂体 我国的社会保险制度体系主要包括.医疗保险.失业保险.工伤保险.生育保险等内容 答:养 ...
- 适合python游戏开发的库你知道几个?
python游戏开发的库 01 PyGame 官网: https://www.pygame.org/docs/ 概述: Pygame 是一组专为编写视频游戏而设计的 Python 模块. 它在优秀的 ...
- Python游戏开发
Python游戏开发 目录 Python游戏开发 前言 画图库 导包画图 起别名 坐标 抬笔与落笔 画笔大小 设置背景颜色 小案例 前进 注意代码的优雅 变量 数据类型 type 字符串 三引号 双引 ...
- 小学生python游戏开发pygame--初始及基础知识
#1024程序员节|用代码,改变世界# 小学生python游戏开发pygame1--基础知识 前言 知识点 1.python知识点 1.1 RGB 颜色表示 1.2 类 2.3 pygame.disp ...
最新文章
- javascript学习笔记2
- dsp之BF531笔记
- Android libcutils库中整数溢出导致的堆破坏漏洞的发现与利用
- python中a=str(int(a))什么意思_如何解决TypeError:只能将str(而不是“int”)连接到str - python...
- C++虚析构和纯虚析构
- [Qt教程] 第21篇 数据库(一)Qt数据库应用简介
- Golang中使用kafka
- 如何设置Fiddler来拦截Java代码发送的HTTP请求,进行各种问题排查
- html5 --- IDBDatabase创建对象存储和索引
- 详解如何在ubuntu上安装node.js
- 输入法相关的使用(跳转)
- 南航计算机系复试内容,2010年南航计算机专业复试真题
- python 身份证识别器_python 识别身份证号码
- 【成功的忙人】在北京30套房的小哥:人一闲,就废了!
- Wordpress中wp-admim管理后台(404)无法进入,无限循环跳出解决方法
- oracle重建orainventory,重建oraInventory解决ORA-20001
- 光线:提高照片的艺术感
- Scrapy豆瓣爬虫 爬取用户以及用户关注关系
- 微信公众平台开发者模式(1)JAVA版接入
- matlab解决最短路径问题
热门文章
- 科技部高新司副司长杨咸武:物联网前景广阔,大有可为
- 毕设进程-小程序云开发随笔
- 基础服务器 IO 模型 Proactor 模型 Reactor 模型 IO 多路复用 异步 IO 模型 Linux 服务器开发 网络编程服务器模型
- 更改Docker的shm(共享内存)大小
- linux运维基础[系统磁盘管理]——————磁盘的物理结构[内部结构、外部结构、计算磁盘大小]
- 2022春招前端最新面试题分享(多益网络)
- 重构36计(13-18)
- Netty学习之路一(大文件传输案例分析)
- 【S2023017计算机专业毕设之基于python的协同过滤旅游景点推荐系统-哔哩哔哩】 https://b23.tv/JLR2Ekk
- 新萝卜家园Ghost版Win10系统X32极速装机版2015年4月