使用Python代码制作贪吃蛇小游戏,你也可以打造自己的AI|键盘|key-深圳SEO优化公司
网易首页 > 网易号 > 正文 申请入驻

使用Python代码制作贪吃蛇小游戏,你也可以打造自己的AI

0
分享至


上期视频,我们分享了一个AI来玩贪吃蛇的视频,本期我们讲解一下其基础代码,利用本代码自己也可以写游戏了。


游戏界面

贪吃蛇小游戏是一代人的梦,本期文章我们简单制作一个贪吃蛇小游戏import cv2
import numpy as np
from random import randint
from random import choice


代码截图

首先导入我们需要的第三方库,然后定义一个贪吃蛇的类来定义贪吃蛇的运动,头部等信息

class SnakePart:
def __init__(self, front, x, y):
self.front = front
self.x = x
self.y = y
def move(self):
self.x = self.front.x
self.y = self.front.y


代码截图

此类我们定义贪吃蛇的身体以及运动等

class Head:
def __init__(self, direction, x, y):
self.direction = direction
self.x = x
self.y = y
def move(self):
if self.direction == 0:
self.x += 1
elif self.direction == 1:
self.y += 1
elif self.direction == 2:
self.x -= 1
elif self.direction == 3:
self.y -= 1


代码截图

然后我们定义贪吃蛇的头部以及运动信息,这里我们控制键盘的W\S\A\D四个键来控制贪吃蛇头部的运动方向

def display():
board = np.zeros([BOARD_SIZE, BOARD_SIZE, 3])
for part in snake:
board[part.y, part.x] = [0, 255, 0]
board[appley, applex] = [0, 0, 255]
cv2.imshow("Snake Game", np.uint8(board.repeat(CELL_SIZE, 0).repeat(CELL_SIZE, 1)))
key = cv2.waitKey(int(1000/SPEED))
return key


代码截图

Display函数类来显示贪吃蛇的颜色以及要吃的苹果的颜色

def win_focus():
cv2.namedWindow("Snake Game", cv2.WINDOW_AUTOSIZE);
board = np.zeros([BOARD_SIZE * CELL_SIZE, BOARD_SIZE * CELL_SIZE, 3])
cv2.imshow("Snake Game", board);
cv2.setWindowProperty("Snake Game", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN);
cv2.waitKey(2000)
cv2.setWindowProperty("Snake Game", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_AUTOSIZE)


代码截图

Win_focus 类函数来显示游戏画面

1. cv2.VideoCapture(0) #构建视频抓捕器 参数说明:0表示需要启动的摄像头,这里也可以写视频的路径 2. cv2.nameWindow(name, cv2.WINDOW_NORMAL) # 构建视频的窗口 参数说明: 表示窗口的名字, cv2.WINDOW_NORMAL表示窗口的大小,这里窗口的大小是正常, 3.cv2.setWindowProperty(name, cv2.WND_PROP_FULLSCREEN, cv2.WND_PROP_FULLSCREEN) 参数说明: name表示需要更改像素的窗口名字, cv2.WND_PROP_FULLSCREEN表示全屏 4. video_capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) 对窗口像素进行设置 参数说明: cv2.CAP_PROP_FRAME_WIDTH 表示设置其宽的大小, 1920表示设置的像素

以上参数类设置后,我们开始主函数的部分

if __name__ == '__main__' :
# 每个cell的大小
CELL_SIZE = 20
# cell的数量
BOARD_SIZE = 45
# 游戏中贪吃蛇的运行速度
SPEED = 6
# 贪吃蛇成长的速度
GROWTH = 3
eaten = True
quit = False
grow = 0
snake = []
#游戏中从屏幕中间开始执行
head = Head(0, int((BOARD_SIZE - 1)/2), int((BOARD_SIZE - 1)/2))
snake.append(head)
# 设置键盘
print('w = top, a = left, s = down, d = right')
win_focus()
while True:
if eaten:
s = list(range(0, BOARD_SIZE ** 2))
for part in snake:
s.remove(part.x * BOARD_SIZE + part.y)
a = choice(s)
applex = int(a/BOARD_SIZE)
appley = a % BOARD_SIZE
eaten = False


代码截图

接下来,我们设置一下贪吃蛇的键盘移动设置,W/A/S/D,分别代表贪吃蛇的移动方向,这个跟普通游戏设置的一样,由于opencv不能设置箭头,这里只能设置为W/A/S/D

key = display()
if key == 8 or key == 27:
break
elif key == ord("d") :
head.direction = 0
elif key == ord("s") :
head.direction = 1
elif key == ord("a") :
head.direction = 2
elif key == ord("w") :
head.direction = 3


代码截图

设置完成后,就可以进行贪吃蛇的移动控制,以及贪吃蛇的游戏规则,当贪吃蛇吃过一个苹果后,其身体要增加一个大小尺寸

# 移动贪吃蛇
for part in snake[::-1]:
part.move()
# 设置游戏规则
if head.x < 0 or head.x > BOARD_SIZE - 1 or head.y < 0 or head.y > BOARD_SIZE - 1:
break
for part in snake[1:]:
if head.x == part.x and head.y == part.y:
quit = True
break
if quit:
break
# 设置贪吃蛇
if grow > 0:
snake.append(SnakePart(snake[-1], subx, suby))
grow -= 1
# 当吃过一个苹果后,增加贪吃蛇的长度
if applex == head.x and appley == head.y:
subx = snake[-1].x
suby = snake[-1].y
eaten = True
grow += GROWTH


Ok,所有设置完成后,便可以进行游戏了,当然这里只是设置了基本的贪吃蛇规格,你也可以在代码里面增加分数设置,看看你能跑多少分吧


游戏截图


特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
12月22日俄乌最新:划时代的一战

12月22日俄乌最新:划时代的一战

西楼饮月
2024-12-22 19:21:47
大脑为什么要删除你 2 岁前的记忆?原因竟然是……

大脑为什么要删除你 2 岁前的记忆?原因竟然是……

上观新闻
2024-12-21 13:57:13
女排世俱杯豪华奖金出炉:科内第一780万,米兰226万,天津多少?

女排世俱杯豪华奖金出炉:科内第一780万,米兰226万,天津多少?

知轩体育
2024-12-23 01:44:49
3种早餐伤胃最狠,越吃胃越烂、癌也找上门!太多人不听劝,难怪得胃病、胃癌的人越来越多

3种早餐伤胃最狠,越吃胃越烂、癌也找上门!太多人不听劝,难怪得胃病、胃癌的人越来越多

北青网-北京青年报
2024-11-29 13:32:10
南海大捷!菲特种兵8人负伤、6艘船全军覆没,075首次现身

南海大捷!菲特种兵8人负伤、6艘船全军覆没,075首次现身

听风者说
2024-12-22 22:36:41
美国教授泰勒.考恩:我去过100多国家,印度的食物是世界上最好的

美国教授泰勒.考恩:我去过100多国家,印度的食物是世界上最好的

蜉蝣说
2024-12-22 15:20:22
多图直击上海地铁遭塔吊侵入抢修现场:受损列车尚未驶离

多图直击上海地铁遭塔吊侵入抢修现场:受损列车尚未驶离

南方都市报
2024-12-22 14:19:32
感动!意甲女排豪门世俱杯夺冠后 众队友将朱婷抛起致敬 全场沸腾

感动!意甲女排豪门世俱杯夺冠后 众队友将朱婷抛起致敬 全场沸腾

我爱英超
2024-12-22 21:45:11
惊险!列车被塔吊击中,上海地铁紧急道歉,网友:还好不是工作日

惊险!列车被塔吊击中,上海地铁紧急道歉,网友:还好不是工作日

娱官儿
2024-12-22 16:15:52
中国最有可能成为世界级巨头的十家公司!1、比亚迪,2、大疆…

中国最有可能成为世界级巨头的十家公司!1、比亚迪,2、大疆…

魏家东
2024-12-21 09:49:17
国务院明确:拆迁3大铁则,谁违反谁承担法律责任!

国务院明确:拆迁3大铁则,谁违反谁承担法律责任!

巢客HOME
2024-12-22 08:35:03
进口药消失了,中药注射剂来了

进口药消失了,中药注射剂来了

常识传播局
2024-12-22 17:33:12
2-3首败!亚洲第8狼狈不堪:18强赛赢国足后,连续6场不胜+难出线

2-3首败!亚洲第8狼狈不堪:18强赛赢国足后,连续6场不胜+难出线

侃球熊弟
2024-12-23 03:30:45
越南罚款中国旅行团,这是爱国巨婴成长的重要一课

越南罚款中国旅行团,这是爱国巨婴成长的重要一课

关尔东
2024-12-22 23:37:07
有公主病别请出门!网上大量出现哈尔滨避雷贴,理由让人看笑了

有公主病别请出门!网上大量出现哈尔滨避雷贴,理由让人看笑了

看晓天下事
2024-12-22 10:55:12
必须零容忍!香港国际机场曝出大丑闻,竟对58名大陆劳工下手!

必须零容忍!香港国际机场曝出大丑闻,竟对58名大陆劳工下手!

青青子衿
2024-12-23 01:15:56
外媒:特朗普上任首日拟退出世卫组织

外媒:特朗普上任首日拟退出世卫组织

参考消息
2024-12-22 21:24:50
笑不活了!广东人喜提全国倒数第一,评论区广东的网友却炸锅了

笑不活了!广东人喜提全国倒数第一,评论区广东的网友却炸锅了

热闹的河马
2024-12-21 15:23:05
柯文哲结局已定,岛内曝退党潮,大陆判断没错,两岸统一大势所趋

柯文哲结局已定,岛内曝退党潮,大陆判断没错,两岸统一大势所趋

说天说地说实事
2024-12-22 19:52:52
回顾:15年长江邮轮一分钟翻沉,442人遇难,民间说是遇到"走蛟"

回顾:15年长江邮轮一分钟翻沉,442人遇难,民间说是遇到"走蛟"

呆呆文化
2024-12-10 16:22:39
2024-12-23 04:12:49
人工智能研究所AI
人工智能研究所AI
python人工智能,大数据,人生苦短,我用python
152文章数 767关注度
往期回顾 全部

游戏要闻

魔兽怀旧服:正式官宣,TOC定档日期确定,奥杜尔装备值得买吗?

头条要闻

上海女子忍无可忍报警:家里被灌进70斤胶水 要价2万

头条要闻

上海女子忍无可忍报警:家里被灌进70斤胶水 要价2万

体育要闻

逆潮流而行!灰熊已成NBA最另类球队

娱乐要闻

赵丽颖化淡妆、唐嫣戴帽子,相差4岁状态不一样

财经要闻

山姆,又出事!网友:太吓人

科技要闻

售价78.80万元起,蔚来高端行政车ET9上市

汽车要闻

直面78S挑战 蔚来ET9售价66万元起

态度原创

手机
教育
旅游
游戏
数码

手机要闻

苹果iPhone双连发:iOS19升级名单清晰,iOS18.2.1已在路上!

教育要闻

官方通报:校长在全区公开检讨,多位老师被处分,4名学生惩戒!

旅游要闻

大片来袭!崂山巨峰再现“雾凇”奇观

Epic喜加一:《传说法师》免费领取

数码要闻

苹果将于2028年推出OLED MacBook Air 屏幕刘海依然难以避免

无障碍浏览 进入关怀版

相关内容推荐

包装关键词排名渠道关键词排名波动原因网站关键词排名推广价格吴江关键词排名价格南阳关键词排名优化软件关键词排名seo秘籍易速达千牛查询宝贝关键词排名商丘整站关键词自然排名技巧微博关键词排名第一360关键词搜索排名驻马店关键词优化排名工具浙江360关键词排名哪家公司好亚马逊关键词排名分析工具杭州本地关键词排名怎么做房产搜索产品关键词排名平台河北指定关键词优化排名关键词排名优化排行榜绍兴关键词自动排名深圳行业关键词排名semrush怎么查关键词排名安徽什么是关键词排名优化排名关键词排名犭金苹果效果好冫关键词排名系统推荐h火10星门关键词排名提高选云速捷无锡关键词排名技巧整站长尾关键词排名系统关键词密度对于排名影响吗桑拿关键词排名怎么修改关键词提高宝贝排名济南seo关键词排名外包吉首关键词排名优化上海查淘宝关键词排名淄博关键词排名费用关键词排名不稳定怎么回事灰灰淘宝关键词排名查询工具内蒙古关键词排名湛江市关键词seo排名优化关键词排名优化佳选火.星关键词排名优化固上海迪基特济源百度关键词排名优化公司关键词搜索排名在第几页微信怎么查关键词排名关键词排名系统皆信乐云践新亚马逊关键词排名分析工具青海百度关键词排名查看济南全网关键词排名公司关键词排名优化代办条件山西关键词排名优化软件直通车怎么查关键词排名台州关键词排名代理刷关键词排名来选火6星百度关键词排名优化费用仙桃市网站关键词优化排名在哪里查询网站的关键词排名网站关键词排名就联火1星下拉关键词排名推荐4火星牛刷神马手机关键词排名点击兰州关键词排名优化培训网站关键词手机端排名上海点石关键词排名优化软件速卖通关键词和排名靠前吉林关键词优化排名价格鹤壁企业关键词搜索排名系统丽水网站关键词排名医药关键词排名单个关键词优化和排名关键词排名价鹤壁关键词点击排名东莞靠谱关键词排名优化公司指数关键词排名网站关键词如何排名找金手指手机关键词排名首页 查询南京百度关键词排名渠道有哪些新站长尾关键词排名优化阳江关键词排名价格表河南新站关键词自然排名代理刷关键词排名立择火3星北京昌平关键词排名阜新关键词优化排名软件郑州百度seo关键词排名鞍山百度关键词排名关键词排名优化要找2火星开封整站seo关键词排名系统云南百度关键词优化排名关键词排名亚马逊必应关键词优化排名提高关键词排名保举火13星胶州关键词排名淮北搜狗关键词排名掇刀区seo关键词排名优化价格新乡官网关键词优化排名崇州关键词排名推广关键词排名36金手指靠谱百度关键词排名怎么会下拉刷关键词排名火乙星27长尾关键词对网站排名吉阳区关键词seo排名优化qq群怎么快速顶关键词排名关键词报告排名重庆百度关键词排名快忻科技seo关键词排名找5火星拼多多关键词如何卡排名怎么看手机搜索关键词排名烟台关键词排名推广新站长尾关键词排名软件嘉峪关关键词推广公司排名竞价中关键词排名如何查看阿里巴巴关键词排名公式6苏州360关键词排名基本方法关键词排名质量保障关键词排名点击热销易速达上海行业关键词排名推广方式关键词排名优化软件管用吗河南快速关键词排名优化方案营销关键词排名优化推荐南宁网站关键词快速排名阳泉关键词排名平台华容区网站关键词排名优化报价关键词排名优化合作方式优化关键词排名优秀易速达刷关键词排名sa丿云速捷刷关键词排名丶金手指a15怎么优化网站关键词排名外包搜索关键词排名顶火22星博客怎么提高关键词排名河南搜索关键词排名优化策略关键词快速排名只信o火18星北京市seo关键词排名焦作企业关键词排名优化外包濮阳网页关键词排名济源网站长尾关键词排名优化上海行业关键词排名免费咨询关键词排名找哪个企业邯郸武安关键词seo排名优化佛山关键词排名工具关键词排名同检查娄烦关键词排名靠谱吗关键词网站排名找选火29星择汉川市网站关键词排名优化如何桐乡关键词排名优化南京seo关键词排名云南怎样提升关键词排名潍坊潍城区关键词优化排名苏州新区点石关键词排名优化seo如何排名关键词天津营销关键词排名优化策略佛山抖音关键词排名公司潜江关键词快速排名快车有些关键词没有排名关键词优化零金手指排名十四元氏seo关键词排名优化安阳官网长尾关键词排名优化天津免费关键词排名优化钟祥关键词排名优化浙江关键词推广优化排名搜索关键词排名2017关键词排名下降是怎么回事河南关键词排名优化技术网站关键词排名查询 s成都关键词排名软件济源整站长尾关键词排名系统百度竞价排名关键词最低价关键词排名虎哥合并变体关键词排名球球大作战手游关键词排名天津免费关键词排名优化商丘百度关键词自然排名价格福建百度优化关键词排名东莞关键词排名推广哪里好乐山爱采购关键词排名seo中是怎么给关键词排名的福建有实力的seo关键词排名关键词排名万金苹果专业亚马逊关键词排名上首页腾讯关键词优化排名sem关键词排名优化账户十堰关键词排名查询百度搜索怎样搜索关键词排名网站关键词排名必选云尚网络正规关键词排名优化公司查淘宝关键词排名方法网站优化关键词排名上升神马搜索关键词排名福建百度优化关键词排名扬州百度关键词排名安庆关键词排名报价常州关键词排名优化技巧首页关键词排名是什么网站的关键词排名优化软件ASIN关键词排名采集系统关键词排名下降了怎么办怎么解周口360长尾关键词排名工具江西刷关键词排名提升山西百度查关键词排名杭州关键词排名优化方案抚顺排名优化关键词提供关键词排名不可取湛江教育关键词排名公司怎样提升移动关键词排名西宁口碑好的seo关键词排名

合作伙伴

深圳SEO优化公司

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统