猫史档案馆


【Python作品分享】贪吃蛇测试版(v1.0)【求助帖】

用户:BKS乄MCproblemBKS乄MCproblem查看:3 回复:3 评论:3 创建时间:2021-06-20T20:41:36


【作品展示】

center_image

 

【作品介绍】

各位㚐佬,帮忙解决一下呗。键盘绑定函数无法执行,这是为啥呢?

 

【作品源代码】

"""
游戏规则:
黄色方形:蛇
绿色圆形:豆子
WSAD:控制蛇上下左右移动
蛇吃到豆子则加一分
蛇头碰到身体则游戏结束
"""

from turtle import *
import time

#定义蛇类
class Snake():
    def __init__(self):
        self.setup()
    def setup(self):
        #变量初始化
        self.pen = Pen()
        self.snake = Pen()
        self.pea = Pen()
        self.bg = Screen()
        self.side=0
        self.if_over=False
        self.score=0
        #初始化背景
        self.bg.bgcolor("light blue")
        self.bg.setworldcoordinates(0,0,500,500)
        self.bg.tracer(10)
        self.bg.title("贪吃蛇")
        #绑定键盘函数
        self.bg.onkey(self.change_side_up, "W")
        self.bg.onkey(self.change_side_down, "S")
        self.bg.onkey(self.change_side_left, "A")
        self.bg.onkey(self.change_side_right, "D")
        self.bg.listen()
        #初始化蛇
        self.snake.shape("喵")
        self.snake.fillcolor("yellow")
        self.snake.turtlesize(3.6)
        self.snake.pu()
        self.snake.setpos(275,275)
        self.snake.showturtle()
        #初始化豆子
        self.pea.shape("circle")
        self.pea.fillcolor("green")
        self.pea.pu()
        self.pea.setpos(275,275)
        self.pea.hideturtle()
        #初始化画笔
        self.pen.pencolor("blue")
        self.pen.hideturtle()
        while not self.if_over:
            # time.sleep(1)
            # self.bg.clear()
            self.snake.showturtle()
            # self.bg.bgcolor("light blue")
            #绘制格线
            self.extra()
            #绑定键盘函数
            self.bg.onkey(self.change_side_up, "W")
            self.bg.onkey(self.change_side_down, "S")
            self.bg.onkey(self.change_side_left, "A")
            self.bg.onkey(self.change_side_right, "D")
            self.bg.listen()
            #蛇移动
            self.snake_move(self.side)


    def extra(self):
        #绘制表格
        for y in range(0,500,50):
            #横向线条
            self.pen.setpos(0, y)
            self.pen.pd()
            self.pen.setheading(0)
            self.pen.forward(500)
            self.pen.setpos(0,y)
            self.pen.pu()
            for x in range(0,500,50):
                #纵向线条
                self.pen.pd()
                self.pen.setpos(x, y)
                self.pen.setheading(90)
                self.pen.forward(50)
                self.pen.setpos(x, y)
                self.pen.pu()
    #改变方向
    def change_side_up(self):
        #上
        self.side=90
        print("up")
    def change_side_down(self):
        #下
        self.side=-90
        print("down")
    def change_side_left(self):
        #左
        self.side=180
        print("left")
    def change_side_right(self):
        #右
        self.side=0
        print("right")

    def snake_move(self, side):
        # 蛇移动
        self.snake.setheading(side)
        self.snake.forward(50)
        


if __name__ == "__main__":
    #实例化蛇类并展示窗口
    window = Snake()
done()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
腾讯内部员工腾讯内部员工

肝帝?!

点赞0


评论


lsk666666lsk666666

改成这样

#绑定键盘函数
            onkey(self.change_side_up, "W")
            onkey(self.change_side_down, "S")
            onkey(self.change_side_left, "A")
            onkey(self.change_side_right, "D")

原因:onkey是turtle提供的,而不是screen

点赞0


评论


BKS乄MCproblemBKS乄MCproblem

感谢lsk666666的帮助

emotion_汗

报错信息为:ArrtibuteErrow;'Snake'object has no attribute'onkey'

属性错误:“蛇”对象没有“onkey”属性

好像是对象的问题

center_image

点赞0


评论