游戏迷提供最新游戏下载和手游攻略!

蛇(Python版本)

发布时间:2024-09-21浏览:98

导入系统

随机导入

# 全局定义

屏幕_X=600

屏幕_Y=600

# 蛇

# 积分以25为单位

蛇类(对象):

# 初始化各种需要的属性[默认右/身体块x5开头]

def __init__(self):

self.direction=pygame.K_RIGHT

self.body=[]

对于范围(5): 内的x

self.addnode()

# 尽可能将蛇块添加到前端

def addnode(自身):

左、上=(0,0)

如果是self.body:

左,上=(self.body[0].left,self.body[0].top)

节点=pygame.Rect(左,上,25,25)

如果self.direction==pygame.K_LEFT:

节点.left -=25

elif self.direction==pygame.K_RIGHT:

节点.left +=25

elif self.direction==pygame.K_UP:

节点.top -=25

elif self.direction==pygame.K_DOWN:

节点.top +=25

self.body.insert(0,节点)

# 删除最后一个块

def delnode(自身):

self.body.pop()

#死亡审判

def isdead(自我):

#撞墙

如果self.body[0].x 不在范围内(SCREEN_X):

返回真

如果self.body[0].y 不在范围内(SCREEN_Y):

返回真

# 撞一下自己

如果self.body[0] 在self.body[1:]: 中

返回真

返回错误

移动!

def 移动(自身):

self.addnode()

self.delnode()

# 改变方向,但左、右、上、下不能反向改变。

def 改变方向(自我,curkey):

LR=[pygame.K_LEFT,pygame.K_RIGHT]

UD=[pygame.K_UP,pygame.K_DOWN]

if curkey in LR+UD:

if (LR 中的curkey) 和(LR 中的self.direction):

返回

if (UD 中的curkey) 和(UD 中的self.direction):

返回

self.direction=curkey

# 食品类别

# 方法:放置/移除

# 积分以25为单位

食品类:

def __init__(self):

self.rect=pygame.Rect(-25,0,25,25)

def 删除(自身):

self.rect.x=-25

def 设置(自身):

如果self.rect.x==-25:

所有位置=[]

# 不要离墙太近。 25 ~ SCREEN_X-25 之间

对于范围内的位置(25,SCREEN_X-25,25):

allpos.append(pos)

self.rect.left=random.choice(allpos)

self.rect.top=random.choice(allpos)

打印(自我.矩形)

def show_text(屏幕、位置、文本、颜色、font_bold=False、font_size=60、font_italic=False):

#获取系统字体并设置文字大小

cur_font=pygame.font.SysFont('宋体', font_size)

#设置是否加粗属性

cur_font.set_bold(font_bold)

#设置属性是否斜体

cur_font.set_italic(font_italic)

#设置文本内容

text_fmt=cur_font.render(文本, 1, 颜色)

#绘制文字

screen.blit(text_fmt, pos)

def main():

pygame.init()

屏幕大小=(SCREEN_X,SCREEN_Y)

屏幕=pygame.display.set_mode(screen_size)

pygame.display.set_caption('蛇')

时钟=pygame.time.Clock()

分数=0

已死=假

#蛇/食物

蛇=蛇()

食物=食物()

而True:

对于pygame.event.get(): 中的事件

if event.type==pygame.QUIT:

sys.exit()

if event.type==pygame.KEYDOWN:

蛇.changedirection(event.key)

# 死亡后按空格重新启动

如果event.key==pygame.K_SPACE 且isdead:

返回主函数()

屏幕.填充((255,255,255))

# 画出蛇身/每走一步+1分

如果不是就死了:

分数+=1

蛇.move()

对于snake.body:中的矩形

pygame.draw.rect(屏幕,(20,220,39),矩形,0)

# 显示死亡文本

isdead=蛇.isdead()

如果死了:

show_text(屏幕,(100,200),'你死了!',(227,29,18),False,100)

show_text(屏幕,(150,260),'按空格重试.',(0,0,22),False,30)

# 食物处理/吃到+50分

# 当食物矩形与蛇头重合时,吃掉它-Snake 添加一个Node

如果food.rect==Snake.body[0]:

分数+=50

食物.remove()

蛇.addnode()

#食品配送

食物.set()

pygame.draw.rect(屏幕,(136,0,21),food.rect,0)

# 显示分数文本

show_text(屏幕,(50,500),'Scores: '+str(scores),(223,223,223))

pygame.display.update()

时钟滴答声(10)

如果__name__=='__main__':

用户评论

我绝版了i

小时候玩贪吃蛇可是玩到手抽筋了!这个Python版的好像还可以试试看啊,希望能还原当年那种简单粗暴的游戏乐趣。

    有17位网友表示赞同!

羁绊你

我超想学习编程!这个Python版贪吃蛇看起来特别适合新手入门,代码逻辑应该很简单吧?有视频教程吗?

    有5位网友表示赞同!

_心抽搐到严重畸形っ°

玩这个 Python 版的贪吃蛇感觉和小时候的不太一样,画面有点简陋,操作也更像是键盘操控的感觉,不如当年那种鼠标控制更方便。

    有16位网友表示赞同!

自繩自縛

学习Python玩游戏真是超级厉害!这款贪吃蛇做的还行,可以根据代码来修改一些特性,比如加变长蛇身、食物数量等等,很有潜力~

    有14位网友表示赞同!

执念,爱

这个 Python 版的贪吃蛇居然还能自定义地图?!感觉太酷了!我试着设计一下一个迷宫风格的地图,看看效果怎么样。

    有5位网友表示赞同!

又落空

看了下代码,python版确实比我之前用C++实现的简洁好多。不过这款游戏的画面还是有点老土啊,希望能加入一些特效、音效等等。

    有18位网友表示赞同!

笑傲苍穹

Python 版的贪吃蛇能让我在学习编程的过程中得到乐趣,这个想法真的太棒了!我决定好好研究一下这边的代码,也许也能写出自己的一款游戏呢。

    有6位网友表示赞同!

箜明

这个Python版贪吃蛇有点怀旧了,但玩着玩着就发现控制不太灵敏,很多时候想要调整方向却很难做到流畅,不知道是不是我的电脑问题?

    有5位网友表示赞同!

迷路的男人

Python真的太强大了吧!一款基本的贪吃蛇游戏都能用它来实现,感觉以后学习编程能玩到更多有趣的游戏。

    有15位网友表示赞同!

月下独酌

Python 版的贪吃蛇代码看起来挺清晰易懂的,适合作为入門者的入门案例吧,不过我建议开发团队可以添加一些教程和文档,这样更方便新手学习。

    有18位网友表示赞同!

景忧丶枫涩帘淞幕雨

这个游戏玩起来有点卡顿, 不知道是我的电脑的问题还是游戏的优化问题?感觉画面特效也没那么丰富啊

    有16位网友表示赞同!

烟雨萌萌

我一直觉得游戏编程太难了,没想到python版贪吃蛇这么简单!我突然对Python学习有了兴趣,可以试试自己动手造个游戏。

    有20位网友表示赞同!

烟花巷陌

这个Python版的贪吃蛇有点过于简单,缺少一些挑战性,我希望它能加入更多关卡、道具和敌人!

    有5位网友表示赞同!

▼遗忘那段似水年华

代码结构很清晰易懂,学习用python做游戏的参考效果很好

    有18位网友表示赞同!

夏日倾情

感觉这个 Python 版的贪吃蛇就仅仅像一个演示案例吧,缺乏趣味性和挑战性。玩起来也没有什么特别的感觉。

    有9位网友表示赞同!

盲从于你

这款游戏确实挺有趣的,在Python基础上实现了一个经典的游戏,适合学习者练习一下代码编写和游戏逻辑设计。

    有5位网友表示赞同!

伤离别

Python 版的贪吃蛇虽然没有太多华丽的效果,但是操作流畅,回归游戏本真,让人感受到童年回忆的味道.

    有16位网友表示赞同!

热点资讯