简单代码编程 贪吃蛇_《贪吃蛇小游戏编程》之用Python语言开发,简单易懂

今天做一个Python版的贪吃蛇游戏,主要用到了pygame包。写这个程序的目的是针对Python语言练练手。使用的开发工具是Pycharm,程序代码如下,另外代码会同步到github一份。原创作品,未经允许不要转载。
动画演示:

b517f1f46e6c5878d5f72cfab78d539e.gif
6e99969329746ee24d75a54a7df5a2c0.gif

代码截图如下:

c10d448fb650c5cc1e98f3d7d51948a6.png
1433e881c2c03f1dc2df850ec8f4db5f.png
daacf41f6c4ba219a50d179c0d6fa07e.png
5d71c916b6eac27cea53fbd8b378ab93.png
82d3fe7b26d9e41cc33800371b3cb069.png
319b05eb96c0ed5b1fe7ff40e0c82d4b.png
e2fd04f5cb89fdc8fd82b9448f00e9b1.png
40fe14acee3be02c2c9c66abdd58cfac.png
22252ff30809206421ebca55b95024d1.png
450f2fe2b6fafa80f6ee93704d1619a0.png
0fa3fae2a80460fdd546ce9b27499b8a.png
055fcdfc801c3ee98af18355e35bb64c.png
e6314d954ec6daa482f38675d9c13c85.png

主函数代码如下:

# 4. 实现主体函数循环def main():    # 4.01 使用全局变量    global snakeBody    global infoList    # 4.02 初始化窗口    init_playSurface()    # 4.03 进入程序主循环    while True :        init_span() # 4.03.01 初始化背景        init_snake()  # 4.03.03 初始化蛇        init_apple() # 4.03.02 初始化苹果        display() # 4.03.04 更新界面显示(画的新图像需要重新显示)        clear_score() # 4.03.05 清空成绩        # 4.03.06 循环以完成蛇不断地爬行        while True: # 每次循环,意味着蛇爬行一步,并且在每次循环中要读取键盘所按方向键,未按方向键则按原来方向继续爬行,如果改变了方向,则调整爬行方向            display()  # 4.03.06.01 更新显示画面            exec_delay()  # 4.03.06.02 爬行动作频次时钟控制,实现每一步之间的延时            getKeyboardDirection() # 4.03.06.03 读取蛇运动方向(当键盘按方向键后,direction 值会及时更新)            nextSnakeHead = get_next_head_with_direction() # 4.03.06.04 得到下步蛇头要走的位置            if is_next_step_touch_the_wall(nextSnakeHead): break;  # 4.03.06.05 遇到围墙,即将越界则结束 本局结束            if is_snake_next_head_cover_apple(nextSnakeHead): # 4.03.06.06 # 如果我们的贪吃蛇的位置和苹果重合了,说明吃到了苹果                add_snake_head(nextSnakeHead) # 4.03.06.06.01 新的蛇头数据放入蛇列表数据开头                draw_snake_head() # 4.03.06.06.02 画新的蛇头(身体不需要重新画)                get_new_apple_position() # 4.03.06.06.03 # 获取新苹果位置                draw_apple() # 4.03.06.06.04 # 画新的苹果                increment_score()  # 增加成绩            else : # 4.03.06.07 如果下一步没有遇到苹果 也没有遇到墙,那么可能是遇到了 空白区域 或者 遇到了自己的身体                clear_snake_tail() # 4.03.06.07.01 前行一步 意味着 自己原来的尾巴位置 应该 变成空白区域,所以删掉旧的尾巴                drop_snake_tail() # 4.03.06.07.02                if is_snake_next_head_cover_body(nextSnakeHead): break # 4.03.06.07.03 如果碰到了自己的身体则 本局结束                else :# 4.03.06.07.04 什么都没有碰到也没吃到苹果,则蛇头顺利前行一步,下一个位置变成蛇头                    add_snake_head(nextSnakeHead) # 4.03.06.07.04.01 新的蛇头数据放入蛇列表数据开头                    draw_snake_head() # 4.03.06.07.04.02 画新的蛇头(身体不需要重新画)        # 4.03.07 打印游戏信息,包括分数        display_info(get_game_over_info(),"notosanscjkjp", 20, yellow, black)# 程序入口if __name__ == '__main__':    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值