Python贪吃蛇代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygame as pygame
import random
import sys
import Rect
class Snake(object):
def__init__(self):# 定义3个颜⾊属性,以防后⾯需要
self.black = pygame.Color(0,0,0)# 背景颜⾊
< = pygame.Color(0,255,0)# ⽬标⽅块颜⾊
self.white = pygame.Color(255,255,255)# 蛇颜⾊
def gameover(self):
pygame.quit()
def initialize(self):
pygame.init()# 初始化,就是初始化 pygame ⾥⾯的东西,没啥鸟⽤,但是没它不⾏,哈哈哈哈
clock = pygame.time.Clock()# 创建时钟对象 (可以控制游戏循环频率
playSurface = pygame.display.set_mode((800,600))# 创建游戏窗⼝
pygame.display.set_caption('贪吃蛇')# 窗⼝名
snakePosition =[80,80]# 贪吃蛇的头
snakebody =[[80,80],[60,80],[40,80]]# 初始化贪吃蛇的长度 (注:这⾥以20*20为⼀个标准⼩格⼦)
targetPosition =[200,400]# 绿⾊⽅块⽬标位置
targetflag =1
direction ='right'# 初始化移动⽅向
""" 注:上⾯的属性啥的,定义是定义了,但是是静态的还动不了,,⽽且还没有颜⾊,⿊⿇⿇的,,,所以才有了下⾯的这⼀个 def main()  函数,
我们通过 main⽅法让他们嗨起来,五光⼗⾊,懂了吗?兄弟萌?
"""
changeDirection = direction  # 输⼊的⽅向
self.main(snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface, clock)
def main(self, snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface,
clock):
# 所有事件全部放到⼀个实时循环中
while True:
for event in ():# 接收到退出事件后,退出程序
# () ,监听⽤户事件,看⽤户在键盘上⼲了啥事
pe== pygame.QUIT:
pygame.quit()
pe== pygame.KEYDOWN:# 根据输⼊,进⾏上下左右移动
if event.key == pygame.K_RIGHT:
changeDirection ='right'
changeDirection ='right'
print("向右转")
if event.key == pygame.K_LEFT:
changeDirection ='left'
print("向左转")
if event.key == pygame.K_DOWN:
changeDirection ='down'
贪吃蛇的编程代码print("向上⾛")
if event.key == pygame.K_UP:
changeDirection ='up'
print("向下⾛")
if event.key == pygame.K_ESCAPE:
pygame.event.post(pygame.event.Event(pygame.QUIT))
if(changeDirection =='left'and not direction =='right'):
# 如果改变后的移动⽅向是 left ,⽽原来的移动不是向 right, 则将⽅向调为 left
direction = changeDirection
if(changeDirection =='right'and not direction =='left'):
direction = changeDirection
if(changeDirection =='down'and not direction =='up'):
direction = changeDirection
if(changeDirection =='up'and not direction =='down'):
direction = changeDirection
# 根据键盘的输⼊,改变蛇的头部,进⾏转弯操作
if direction =='right':
snakePosition[0]+=20
if direction =='left':
snakePosition[0]-=20
if direction =='down':
snakePosition[1]+=20
if direction =='up':
snakePosition[1]-=20
# 将蛇的头部当前位置加⼊到蛇⾝的列表中,增加蛇的长度
snakebody.insert(0,list(snakePosition))
# 如果蛇头与⾷物的位置重合,则判定吃到⾷物,将⾷物数量清零;⽽没吃到⾷物的话,蛇⾝就会跟着蛇头运动,蛇⾝的最后⼀节将被踢出列表if(snakePosition[0]== targetPosition[0]and snakePosition[1]== targetPosition[1]):# 吃到绿⾊块
targetflag =0
else:
snakebody.pop()# 没吃到绿块
if targetflag ==0:# 如果吃到绿⾊块,则重新⽣成新的绿⾊块
x = random.randrange(1,40)
y = random.randrange(1,30)
targetPosition =[int(x *20),int(y *20)]# 绿⾊块位置
targetflag =1# ⽤来判断是否吃到绿⾊块,吃到则为0,否则为1
# 填充背景颜⾊
playSurface.fill(self.black)
for position in snakebody:
"""
在Surface上绘制矩形,第⼆个参数是线条(或填充)的颜⾊,
第三个参数Rect的形式是((x, y), (width, height)),
表⽰的是所绘制矩形的区域,其中第⼀个元组(x, y)表⽰的是该矩形左上⾓的坐标,
第⼆个元组 (width, height)表⽰的是矩形的宽度和⾼度。width表⽰线条的粗细,单位为像素;默认值为0,表⽰填充矩形内部
# 第⼀个参数surface  指定⼀个surface编辑区
# 第⼆个参数color    指定颜⾊
# 第三个参数rect    返回⼀个矩形包含位置信息(x,y),(width,height)
# 第四个参数width    表⽰线条的粗细 width=0 实⼼  width=1 空⼼
# 画蛇
# 画⽬标⽅块⼉
"""
# 画蛇,,,就是把蛇⾏⾛的⾝形画出来
(playSurface, self.white, Rect(position[0], position[1],20,20))
# 画⽬标⽅块⼉
# 画⽬标⽅块⼉
# print(targetPosition[0])    你运⾏⼀下就知道了
# print(targetPosition[1])
(playSurface, , Rect(targetPosition[0], targetPosition[1],20,20))
# 更新显⽰到屏幕
pygame.display.flip()
# 判断游戏结束
if(snakePosition[0]>900or snakePosition[0]<0):# 窗⼝长
snake.gameover()
elif(snakePosition[1]>800or snakePosition[0]<0):# 窗⼝宽
snake.gameover()
for i in snakebody[1:]:# 撞到⾃⼰
if(snakePosition[0]== i[0]and snakePosition[1]== i[1]):# 当蛇头的位置(像素)与蛇⾝⼀样时,即可判定它们相撞了                    snake.gameover()
# 控制蛇⾏⾛速度
clock.tick(6)
snake = Snake()
snake.initialize()
注:代码不是本⼈所写,如有侵权,请告知我删除,谢谢!