计算机软件技术实习——贪吃蛇

1、蛇的生成

为了方便确定点的坐标将蛇和游戏的网格界面全部设定为一个点类其中包含点的位置,点的大小由屏幕大小除以行数和列数确定。

class Point:
    def __init__(self, row=0, col=0):
        self.row = row
        self.col = col

    def copy(self):
        return Point(self.row, self.col)

首先确定蛇头的位置在屏幕的中心,然后设置一个蛇队列的空队列

2、蛇的移动

每次蛇头移动前将蛇头的位置复制到队列中,如果没有吃到食物将队列中最后一个元素删除,如果吃到食物就不删除队列最后一个元素,实现蛇头和蛇身的联动移动。如果此时direct方向是向上或者向下才能实现向左向右,同理方向是向左向右才能实现向上或者向下,如果direct是向左蛇头的横坐标减一、direct是向右蛇头的横坐标加一、direct是向上蛇头的纵坐标减一、direct是向下蛇头的纵坐标加一

3、食物的生成

食物生成函数用一个死循环嵌套,设置点的位置为0~行数和0~列数中的随机数,检测食物的位置是否与蛇身蛇头重合,如果重合将重新生成食物,直到不与蛇头和蛇身重合才返回食物位置。

4、碰撞检测

判断蛇头是否与蛇身和屏幕边界重合

#判断蛇是否撞边界

if head.col < 0 or head.row < 0 or head.row >= ROW or head.col >= COL:

    dead = True
# 判断蛇是否撞蛇身
for snake in snakes:
    if snake.row == head.row and snake.col == head.col:
        dead = True
        break

如果相撞就结束游戏

5、转向逻辑

设置一个转向逻辑的标志位:direct,转向逻辑中获取按钮的按下向上、向下、向左、向右的事件,如果此时direct方向是向上或者向下才能实现向左向右,同理方向是向左向右才能实现向上或者向下,如果direct是向左蛇头的横坐标减一、direct是向右蛇头的横坐标加一、direct是向上蛇头的纵坐标减一、direct是向下蛇头的纵坐标加一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值