【Python项目】过马路游戏

零、序章

这是一个使用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<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sprite.Nym

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值