python实现贪吃蛇游戏源码
作者:心心强 发布时间:2021-07-22 12:45:24
标签:python,贪吃蛇
本文实例为大家分享了python实现贪吃蛇的具体代码,供大家参考,具体内容如下
import pygame
import sys
import random
SCREEN_X=600
SCREEN_Y=600
class Snake(object):
def __init__(self):
self.direction=pygame.K_RIGHT
self.body = []
for i in range(5):
self.addnode()
def addnode(self):
left, top = (0, 0)
if self.body:
left, top = (self.body[0].left,self.body[0].top)
node = pygame.Rect(left,top,25,25)
if self.direction == pygame.K_RIGHT:
node.left += 25
elif self.direction == pygame.K_LEFT:
node.left -= 25
elif self.direction == pygame.K_UP:
node.top -= 25
elif self.direction == pygame.K_DOWN:
node.top += 25
self.body.insert(0,node)
def delnode(self):
self.body.pop()
def isdead(self):
if self.body[0].x not in range(SCREEN_X):
return True
if self.body[0].y not in range(SCREEN_Y):
return True
if self.body[0] in self.body[1:]:
print('in body')
return True
return False
def move(self):
self.addnode()
self.delnode()
def changeddirection(self,curkey):
LR = [pygame.K_LEFT,pygame.K_RIGHT]
UD = [pygame.K_DOWN,pygame.K_UP]
if curkey in LR+UD:
if (curkey in LR) and (self.direction in LR):
return
if (curkey in UD) and (self.direction in UD):
return
self.direction = curkey
class Food(object):
def __init__(self):
self.rect = pygame.Rect(-25, 0, 25, 25)
def remove(self):
self.rect.x = -25
def set(self):
if self.rect.x == -25:
allpos = []
for pos in range(25,SCREEN_X-25,25):
allpos.append(pos)
self.rect.left = random.choice(allpos)
self.rect.top = random.choice(allpos)
print(self.rect)
def show_text(screen,pos,text,color,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(text,1,color)
screen.blit(text_fmt,pos)
def main():
pygame.init()
screen_size = (SCREEN_X,SCREEN_Y)
screen = pygame.display.set_mode(screen_size)
pygame.display.set_caption('Snake')
clock=pygame.time.Clock()
scores=0
isdead=False
snake=Snake()
food=Food()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
#print(event)
#pressed_keys = pygame.key.get_pressed()
#if pressed_keys.count(1)>1:
# continue
print(event.key)
snake.changeddirection(event.key)
if event.key == pygame.K_SPACE and isdead:
return main()
screen.fill((255,255,255))
if not isdead:
scores +=1
snake.move()
for rect in snake.body:
pygame.draw.rect(screen,(20,220,39),rect,0)
isdead=snake.isdead()
if isdead:
show_text(screen,(100,200),'you dead!',(227,29,18),False,100)
show_text(screen,(150,260),'press space to try again...',(0,0,22),False,30)
if food.rect == snake.body[0]:
scores +=50
food.remove()
snake.addnode()
food.set()
pygame.draw.rect(screen,(136,0,21),food.rect,0)
show_text(screen,(50,500),'Scores:'+str(scores),(223,223,223))
pygame.display.update()
clock.tick(5)
if __name__ == "__main__":
main()
来源:https://blog.csdn.net/u010708028/article/details/104922573
0
投稿
猜你喜欢
- 环境管理管理 Python 版本和环境的工具p:非常简单的交互式 python 版本管理工具。官网pyenv:简单的 Python 版本管理
- Web技术的发展速度太快了,如果你不与时俱进,就会被淘汰。因此,为了应对即将到来的HTML5,本文总结了22个HTML5的初级技巧,希望能对
- 0.为什么以前不需要配置这么麻烦就可以修改分享description 等信息,但是现在不行了.因为6.0.2版本之前没有做权限验证,所以co
- 目录背景什么是协程?什么是 gevent?协程的例子Q&AQ:gevent 无法捕获的耗时A:猴子补丁实践异步 requests 请
- 前言在数据分析中,分组聚合二者缺一不可。对数据聚合(求和、平均值等)通常是不可避免的。pd.agg()很方便进行聚合操作。1. 创建Data
- 为了访问数据库,就要提供数据库连接类,在C#中,是通过Connection类来实现的四种类型的连接方式SQLConnectionADOCon
- (一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clus
- WHERE 条件有时候操作数据库时,只操作一些有条件限制的数据,这时可以在SQL语句中添加WHERE子句来规定数据操作的条件。语法:SELE
- 你好,一般情况下,Ctrl+C 是最简单的方法,当无法 Ctrl+C 时,我们借助于 Python,以下是具体步骤:第一步,安装工具库1、t
- 这篇文章主要介绍了如何基于python实现归一化处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 这篇文章主要介绍了python智联招聘爬虫并导入到excel代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 目录1. 字符串拆分函数.split()2. 字符串拼接函数.join()扩展:理解" ".join(s.split(&
- 本文实例为大家分享了JavaScript实现烟花特效的具体代码,供大家参考,具体内容如下本特效使用面向对象编程分析OOA点击触发事件烟花运动
- 我们最好从最难的问题开始:“到底什么是函数编程 (FP)?”一个答案可能会说 FP 就是您在使用例如 Lisp、Scheme、Haskell
- 本文实例讲述了原生JS实现的简单轮播图功能。分享给大家供大家参考,具体如下:经过几天的努力,终于攻克了这一难题,于是迫不及待的想要分享给大家
- 如下所示:# -*- coding: utf-8 -*-#简述:一个整数,它加上100和加上268后都是一个完全平方数#提问:请问该数是多少
- pandas创建series方法print("====创建series方法一===")dic={"a"
- 看下面的例子就会明白了: print '|','*'.ljust(10),'|' print
- 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。一个循环在C语言等其他
- 前言平时我们在接收后端返回的json对象通常是一个字符串类型的object,所以一般我们要对这个object进行类型转化后,我们才能使用ob