Python 简易版贪食蛇(源代码)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 简易版贪食蛇(源代码)相关的知识,希望对你有一定的参考价值。
Python 简易版贪食蛇
简易版贪食蛇代码如下,直接运行即可。
1. 效果图
2.源代码
源代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygame as pygame
import random
import sys
from pygame.rect import Rect
class Snake(object):
def __init__(self):
self.black = pygame.Color(0, 0, 0)
self.green = pygame.Color(0, 255, 0)
self.white = pygame.Color(255, 255, 255)
def gameover(self):
pygame.quit()
sys.exit()
def initialize(self):
pygame.init()
clock = pygame.time.Clock()
playSurface = pygame.display.set_mode((800, 600))
pygame.display.set_caption(tanshishe)
snakePosition = [80, 80]
snakebody = [[80, 80], [60, 80], [40, 80]]
targetPosition = [200, 400]
targetflag = 1
direction = right
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 pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_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):
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
playSurface.fill(self.black)
for position in snakebody:
pygame.draw.rect(playSurface, self.white, Rect(position[0], position[1], 20, 20))
pygame.draw.rect(playSurface, self.green, Rect(targetPosition[0], targetPosition[1], 20, 20))
pygame.display.flip()
if (snakePosition[0] > 900 or snakePosition[0] < 0):
snake.gameover()
elif (snakePosition[1] > 800 or snakePosition[0] < 0):
snake.gameover()
for i in snakebody[1:]:
if (snakePosition[0] == i[0] and snakePosition[1] == i[1]):
snake.gameover()
clock.tick(5)
snake = Snake()
snake.initialize()
以上是关于Python 简易版贪食蛇(源代码)的主要内容,如果未能解决你的问题,请参考以下文章