python 运行环境下载 https://www.python.org/downloads/
下载 3.7.3 最新版本 32位即可
话不多说,先上效果图
代码如下:
安装运行环境之后,把下面内容直接保存为: 贪吃蛇.py ,双击即可运行。 有点类似以前的VBS,改个后缀,文本直接变代码。 代码规则有简单的说明, 可以180度掉头,可以撞到自己身体不死,我的蛇皮我做主。
import pygame
import sys
import random
from pygame.locals import *
# 定义目标方块的颜色
redColor = pygame.Color(255, 0, 0) #红色 目标方块
blackColor = pygame.Color(0, 0, 0) #黑色,背景颜色
whiteColor = pygame.Color(255, 255, 255) # 白色
#定义游戏结束函数
def gameOver():
pygame.quit()
sys.exit()
def main():
pygame.init()
#速度变量
fpcClock= pygame.time.Clock()
#创建窗口
playSurface = pygame.display.set_mode((640, 480))
pygame.display.set_caption('李达康的蛇皮走位')
#
snakePosition= [100, 100]
snakeBody=[[100, 100], [80, 100], [60, 100]]
targetPosition = [300, 300]
targetflag = 1
direction = 'right'
changeDirection = direction
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_RIGHT:
changeDirection = 'right'
if event.key == K_LEFT:
changeDirection = 'left'
if event.key == K_UP:
changeDirection = 'up'
if event.key == K_DOWN:
changeDirection = 'down'
#注释掉 这代码块的 and direction != 'right': 这4段代码,蛇可以直接180度掉头,
if changeDirection == 'left' and direction != 'right':
direction = changeDirection
if changeDirection == 'right' and direction != 'left':
direction = changeDirection
if changeDirection == 'up' and direction != 'down':
direction = changeDirection
if changeDirection == 'down' and direction != 'up':
direction = changeDirection
if direction == 'right':
snakePosition[0] +=20
if direction == 'left':
snakePosition[0] -=20
if direction == 'up':
snakePosition[1] -=20
if direction == 'down':
snakePosition[1] +=20
snakeBody.insert(0,list(snakePosition))
#如果貪吃蛇和目標放款的位置重疊,長度加一
# 標記為0 ,重新生成方塊
if snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]:
targetflag = 0
else:
snakeBody.pop()
if targetflag == 0:
x = random.randrange(1, 32)
y = random.randrange(1, 24)
targetPosition = [int(x*20), int(y*20)] # 640 480
targetflag = 1
playSurface.fill(blackColor)
for position in snakeBody:
pygame.draw.rect(playSurface, whiteColor, Rect(position[0],position[1],20,20))
pygame.draw.rect(playSurface, redColor, Rect(targetPosition[0],targetPosition[1],20,20))
#更新到界面
pygame.display.flip()
#判斷遊戲結束
if snakePosition[0] > 620 or snakePosition[0] < 0:
gameOver()
elif snakePosition[1] > 460 or snakePosition[1] <0:
gameOver()
#把pass删除,把gameOver()取消注释,即可判断贪吃蛇是否撞了自己的身体,但是我觉得撞到自己身体是不会死掉的
for s in snakeBody[1:]:
if snakePosition[0] == s[0] and snakePosition[1] == s[1]:
pass
#gameOver()
fpcClock.tick(7)
if __name__ == '__main__':
main()
|
|