贪吃蛇c++代码详解(c语言贪吃蛇最简单代码)

最近有很多的同学问,能不能用Python做出一个小游戏来,而且最好要讲清楚每一段干嘛是用来干嘛的

那行,今天将来讲解一下用Python pygame做一个贪吃蛇的小游戏

贪吃蛇c++代码详解(c语言贪吃蛇最简单代码)

据说是贪吃蛇游戏是1976年,Gremlin公司推出的经典街机游戏,那我们今天用Python制作的这个贪吃蛇小游戏是一个像素版的,虽然简陋,但还是可以玩起来的

贪吃蛇c++代码详解(c语言贪吃蛇最简单代码)私信小编01即可获取大量Python学习资源
我们主要要做的内容

  1. 创建游戏窗口
  2. 绘制贪吃蛇与食物
  3. 蛇吃食物

贪吃蛇的棋盘模型

贪吃蛇c++代码详解(c语言贪吃蛇最简单代码)
贪吃蛇c++代码详解(c语言贪吃蛇最简单代码)现在就开始我们的代码,首先,还是导入模块

import pygame
import random
import copy

1. 创建游戏窗口
1.1 游戏初始化

pygame.init()
clock = pygame.time.Clock()  # 设置游戏时钟
pygame.display.set_caption("贪吃蛇-解答、源码、相关资料可私信我")  # 初始化标题
screen = pygame.display.set_mode((500, 500))  # 初始化窗口 窗体的大小为 500  500

1.2 初始化蛇的位置 蛇的长度 10 10 也就是蛇的 X Y 坐标

snake_list = [[10, 10]]

首先设置蛇的一个运行方向 接下来判断键盘事件在决定蛇的运行方向
蛇可以运行起来了,那么接下来就是,吃食物增加自己的长度和不吃食物在不同的位置显示
初始小蛇方向

move_up = False
move_down = False
move_left = False
move_right = True

1.3 初始化食物的位置

x = random.randint(10, 490)
y = random.randint(10, 490)
food_point = [x, y]

1.4 开启游戏循环

running = True
while running:
    # 游戏时钟 刷新频率
    clock.tick(20)

1.5 填充背景为白色

screen.fill([255, 255, 255])

1.6 绘制背景

本文转载自:https://www.gylmap.com

for x in range(0, 501, 10):
    pygame.draw.line(screen, (195, 197, 199), (x, 0), (x, 500), 1)
    pygame.draw.line(screen, (195, 197, 199), (0, x), (500, x), 1)
    food_rect = pygame.draw.circle(screen, [255, 0, 0], food_point, 15, 0)

贪吃蛇c++代码详解(c语言贪吃蛇最简单代码)1.7绘制蛇

snake_rect = []
for pos in snake_list:
    # 1.7.1 绘制蛇的身子
    snake_rect.append(pygame.draw.circle(screen, [255, 0, 0], pos, 5, 0))

贪吃蛇c++代码详解(c语言贪吃蛇最简单代码)2. 绘制贪吃蛇与食物
2.1 获取蛇的长度,移动蛇的身子

pos = len(snake_list) - 1
while pos > 0:
    snake_list[pos] = copy.deepcopy(snake_list[pos - 1])
    pos -= 1

2.2 更改蛇头位置

if move_up:
    snake_list[pos][1] -= 10
    if snake_list[pos][1]  500:
        snake_list[pos][1] = 0

if move_left:
    snake_list[pos][0] -= 10
    if snake_list[pos][0]  500:
        snake_list[pos][0] = 0

2.3 键盘控制移动职位

for event in pygame.event.get():
    # print(event)
    # 判断按下的按键
    if event.type == pygame.KEYDOWN:
        # 上键
        if event.key == pygame.K_UP:
            move_up = True
            move_down = False
            move_left = False
            move_right = False
        # 下键
        if event.key == pygame.K_DOWN:
            move_up = False
            move_down = True
            move_left = False
            move_right = False
        # 左键
        if event.key == pygame.K_LEFT:
            move_up = False
            move_down = False
            move_left = True
            move_right = False
        # 右键
        if event.key == pygame.K_RIGHT:
            move_up = False
            move_down = False
            move_left = False
            move_right = True

2.4 获取蛇的长度,移动蛇的身子

pos = len(snake_list) - 1
while pos > 0:
    snake_list[pos] = copy.deepcopy(snake_list[pos - 1])
    pos -= 1

3. 蛇吃食物
3.1 碰撞检测 如果蛇吃掉食物

if food_rect.collidepoint(pos):
    # 贪吃蛇吃掉食物
    snake_list.append(food_point)
    # 重置食物位置
    food_point = [random.randint(10, 490), random.randint(10, 490)]
    food_rect = pygame.draw.circle(screen, [255, 0, 0], food_point, 15, 0)
    break

3.2 如果蛇吃掉了自己

head_rect = snake_rect[0]
count = len(snake_rect)
while count > 1:
    if head_rect.colliderect(snake_rect[count - 1]):
        running = False
    count -= 1

pygame.display.update()
秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

  • 市场怎么看(考察市场需要看哪些方面)

    小编按: 本周大盘四涨一跌,K线图上则是三阳二阴,周一大盘继续探底后回升,之后震荡上行,周四一度收复所有均线,周五60天线得而复失。一周大盘上涨87个点,涨幅为2.72%,指数站上…

    2022年4月30日
  • 韩国手机品牌有哪些(2022年最新手机排行榜)

    智能手机市场竞争激烈,在为用户带来大量新品面市的同时,也令不少手机厂商因跟不上步伐而渐渐退出竞争。 此前,曾多次有消息提到,LG或放弃旗下的智能手机业务,但鉴于仍有不少LG新机信息…

    2022年3月21日
  • 猪八戒威客网是真的吗,猪八戒威客的优劣势及发展前景分析

    近年网上出现了一类新兴职群,他们只要在网上帮人出点子、出创意、解决难题,就能获得丰厚的报酬,该职业被大家成为威客。而猪八戒网相当于一个撮合者,主要任务是撮合买家和卖家。买家多数是购…

    2022年3月18日
  • 个人建网站的详细步骤(免费创建个人网站的方法)

    现在,无论是企业还是个人,想要在网络做推广,拥有一个独立的网站还是很有必要的。然而,找网络公司做网站,价格至少也得几千甚至上万,这样对于初创公司或者个人,都是一笔不小的费用。自己上…

    2022年5月11日
  • 联想天逸f41拆机图解(游戏笔记本电脑排名)

    现在电脑配置升级很快,现在处理器都是核心越来越多,价格也是越来越高,组装一台机器动辄上万。不过在这里小狐要给大家介绍一个经济划算的选择,那就是小主机,性能对于一些用户来说足够用,就…

    2022年3月17日 专栏投稿
  • 是怎么化的(化归)

    在问题的解决过程中,对待解题不断进行变形、转化。 直至把它归结为已经解决的问题或容易解决的问题,最终得到原问题的解答。 这就是“化归”的数学思想。 例题1: 一个数加上2,减去5,…

    2022年4月4日
  • 4g是多少(4g网速最快多少)

    华为P50系列已经正式发布,因为众所周知的原因,这次的P50全系都只支持4G网络,虽然使用了各种通信优化技术,但在很多人来看,它就是不支持5G,使用体验上一定会有遗憾。 这也可以牵…

    2022年5月29日 专栏投稿
  • 怎么编程序(入门编程软件哪个好用)

    应个别粉丝的要求,希望能推荐一款可以学习编程的app,容易上手,面向基础弱的。通过考量,我就把以前我常用的一款入门级推荐给大家,是全英文,这点有些遗憾,对于基础薄弱的朋友来说,确实…

    2022年4月6日 专栏投稿
  • steam怎么登录(steam网页版怎么进)

    最近的圣诞节活动数不胜数,steam也是有冬季促销活动,但是有的小伙伴们在出现这个冬季促销之后发现steam平台登不上去,打不开,具体怎么解决,今天小编就来教大家该如何解决进不去s…

    2022年4月14日 专栏投稿
  • 牙齿出血怎么办(每天刷牙都出血危险吗)

    平常人如果注意口腔卫生的话,好多朋友们都有早晚刷牙的好习惯。口腔洁净了,牙齿就不容易生病,而且也不易产生口气等令人尴尬的事情。不过,有时候每天刷牙都会发现牙龈出血现象,这可怎么办呢…

    2022年5月2日
品牌推广 在线咨询
返回顶部