零、序章
这是一个使用Python写的过马路游戏。
可以练习一些面向对象的知识。
由于全写注释CSND说我字太少,就统一写代码外面来
实现的功能有:
- 汽车的随机刷新、汽车的整体移动、碰撞检测
- 玩家的移动(只能向上移动。。。没有更多操作了)
- 关卡显示以及根据关卡自动调整汽车移动速度
可以改进的地方有:
- 暂停功能
- 碰撞检测可以优化得更精准
- 感觉有卡顿,不知道是单次循环的停顿时间根据level变化造成的错觉,还是运行到后面车太多了造成了实际的卡顿
一、游戏主程序
- cal_limits函数:根据screen计算边界
- quit_game函数:控制退出游戏
- 实例化屏幕对象、玩家对象、汽车管理员对象、计分板对象
- 每次循环停顿时间根据level决定,level越高,停顿时间越短,达到汽车运动越快的效果(也可以通过更改汽车单次移动常量来加速)
- 每次循环汽车要刷新、移动、进行碰撞检测
import time
from turtle import Screen
from player import Player
from car_manager import CarManager
from scoreboard import ScoreBoard
screen = Screen()
screen.setup(width=600, height=600)
screen.tracer(0)
def cal_limits(screen):
u_limit = screen.window_height() / 2
d_limit = -screen.window_height() / 2
l_limit = -screen.window_width() / 2
r_limit = screen.window_width() / 2
return u_limit, d_limit, l_limit, r_limit
def quit_game():
global game_is_on
game_is_on = False
limits = cal_limits(screen)
player = Player()
car_manager = CarManager(limits=limits)
screen.listen()
screen.onkey(key='Up', fun=player.move)
screen.onkey(key='q', fun=quit_game)
scoreboard = ScoreBoard(limits)
game_is_on = True
while game_is_on:
time.sleep(0.11 - scoreboard.level * 0.015)
screen.update()
car_manager.add_car((limits[0] - 50, limits[1] + 100, limits[3], limits[3<