主要需求

  1. 当游戏开始时,提示信息应该显示如何开始游戏(按回车键,按空格键等)。
  2. 对象以图像的形式显示在屏幕上(而不是点或矩形)
  3. 对象使用字典表示。
  4. 屏幕应为300 x 300,并有背景图像。
  5. 玩家从屏幕底部开始,通过按箭头键改变位置
  6. 伤害角色不断地在屏幕上移动,当离开边缘时循环回到相反的一边。
  7. 比赛以3次生命和0分开始。(但在测试时将其设置为1)
  8. 当伤害与玩家发生碰撞时,游戏生命值应该减少1,玩家应该在屏幕底部重新开始。
  9. 分数,生命和等级应该显示在屏幕上。
  10. 从level = 1开始,并在每次用户到达目的地时增加级别。
  11. 物体的速度应该随着关卡的增加而增加
  12. 当生命值减少到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游戏开发之小乌龟逃离鲨海相关推荐

  1. python游戏开发的五个案例分享

    本文给大家分享了作者整理的五个python游戏开发的案例,通过具体设计思路,代码等方面详细了解python游戏开发的过程,非常的详细,希望大家能够喜欢 一.序列应用--猜单词游戏 1. 游戏介绍 猜单 ...

  2. 师傅带徒弟学:Python游戏开发引擎cocos2d-python-关东升-专题视频课程

    师傅带徒弟学:Python游戏开发引擎cocos2d-python-299人已学习 课程介绍         Python语言之所以受欢迎,很大的原因是有很多可以使用的库,Python社区也有很多游戏 ...

  3. 小学生python游戏开发pygame5--title地图调用

    小学生python游戏开发pygame5--title地图调用 前言 文件夹目录 pytmx模块安装 实现效果 代码实现 前言 文件夹目录 pytmx模块安装 实现效果 代码实现 import log ...

  4. python 游戏开发_Python游戏开发入门

    spContent=--玩游戏的最高境界是什么? --当然是设计一款属于自己的游戏! --设计游戏不是目的,从游戏看道理,从道理看人生,人生何尝不是属于自己的游戏? --"弹指之间·享受创新 ...

  5. 32岁学python有前途吗_Python发展前景如何?学习Python游戏开发有前途吗?

    Python发展前景如何?学习Python游戏开发有前途吗? 时间:2018-04-02 15:48:31 | 来源:千锋教育 | 作者:alents 学习Python的人都知道一句话:人生苦短,我用 ...

  6. python游戏开发的第三方库有哪些_Python 游戏开发方向的第三方库是

    Python 游戏开发方向的第三方库是 答:Pygame 内分泌器官包括( ) 答:甲状腺 松果体 甲状旁腺 垂体 我国的社会保险制度体系主要包括.医疗保险.失业保险.工伤保险.生育保险等内容 答:养 ...

  7. 适合python游戏开发的库你知道几个?

    python游戏开发的库 01 PyGame 官网: https://www.pygame.org/docs/ 概述: Pygame 是一组专为编写视频游戏而设计的 Python 模块. 它在优秀的 ...

  8. Python游戏开发

    Python游戏开发 目录 Python游戏开发 前言 画图库 导包画图 起别名 坐标 抬笔与落笔 画笔大小 设置背景颜色 小案例 前进 注意代码的优雅 变量 数据类型 type 字符串 三引号 双引 ...

  9. 小学生python游戏开发pygame--初始及基础知识

    #1024程序员节|用代码,改变世界# 小学生python游戏开发pygame1--基础知识 前言 知识点 1.python知识点 1.1 RGB 颜色表示 1.2 类 2.3 pygame.disp ...

最新文章

  1. javascript学习笔记2
  2. dsp之BF531笔记
  3. Android libcutils库中整数溢出导致的堆破坏漏洞的发现与利用
  4. python中a=str(int(a))什么意思_如何解决TypeError:只能将str(而不是“int”)连接到str - python...
  5. C++虚析构和纯虚析构
  6. [Qt教程] 第21篇 数据库(一)Qt数据库应用简介
  7. Golang中使用kafka
  8. 如何设置Fiddler来拦截Java代码发送的HTTP请求,进行各种问题排查
  9. html5 --- IDBDatabase创建对象存储和索引
  10. 详解如何在ubuntu上安装node.js
  11. 输入法相关的使用(跳转)
  12. 南航计算机系复试内容,2010年南航计算机专业复试真题
  13. python 身份证识别器_python 识别身份证号码
  14. 【成功的忙人】在北京30套房的小哥:人一闲,就废了!
  15. Wordpress中wp-admim管理后台(404)无法进入,无限循环跳出解决方法
  16. oracle重建orainventory,重建oraInventory解决ORA-20001
  17. 光线:提高照片的艺术感
  18. Scrapy豆瓣爬虫 爬取用户以及用户关注关系
  19. 微信公众平台开发者模式(1)JAVA版接入
  20. matlab解决最短路径问题

热门文章

  1. 科技部高新司副司长杨咸武:物联网前景广阔,大有可为
  2. 毕设进程-小程序云开发随笔
  3. 基础服务器 IO 模型 Proactor 模型 Reactor 模型 IO 多路复用 异步 IO 模型 Linux 服务器开发 网络编程服务器模型
  4. 更改Docker的shm(共享内存)大小
  5. linux运维基础[系统磁盘管理]——————磁盘的物理结构[内部结构、外部结构、计算磁盘大小]
  6. 2022春招前端最新面试题分享(多益网络)
  7. 重构36计(13-18)
  8. Netty学习之路一(大文件传输案例分析)
  9. 【S2023017计算机专业毕设之基于python的协同过滤旅游景点推荐系统-哔哩哔哩】 https://b23.tv/JLR2Ekk
  10. 新萝卜家园Ghost版Win10系统X32极速装机版2015年4月