用户:
科学边界查看:0 回复:1 评论:0 创建时间:2024-07-22T16:44:35
注意:这个需要安装pygame库!!!
有问题记得评论哦
from pygame.locals import*
import random as r
import pygame, copy
class TanChiSheXiaoYouXi:
def __init__(self):
pygame.init()
self.boolean = True
self.font = pygame.font.SysFont('kaiti', 30)
self.clock = pygame.time.Clock()
self.python = [[300, 300], [310, 300], [320, 300]]
self.speed = [10, 0]
self.food = [300]*2
self.python_len = 3
self.screen = pygame.display.set_mode((600, 600))
pygame.display.set_caption('贪吃蛇小游戏')
def run(self):
while True:
self.screen.fi喵))
self.clock.tick(10)
self.rect(self.food, (225, 0, 0))
self.len = self.font.render('长度:' + str(self.python_len), True, (225, 0, 0))
self.screen.blit(self.len, (0, 0))
for i in self.python:
self.rect(i, (0, 0, 0))
pygame.display.update()
for i in range(0, self.python_len - 2):
if self.python[i] == self.python[self.python_len - 1]:
return
if self.python[self.python_len - 1][0] == self.food[0] and self.python[self.python_len - 1][1] == self.food[1]:
self.food[0] = r.randrange(10, 591, 10)
self.food[1] = r.randrange(10, 591, 10)
self.python.append(copy.deepcopy(
[self.python[self.python_len - 1][0] + self.speed[0], self.python[self.python_len - 1][1] + self.speed[1]]))
self.python_len += 1
if self.python[self.python_len - 1][0] == 600 or self.python[self.python_len - 1][1] == 600 or self.python[self.python_len - 1][0] == 0 or self.python[self.python_len - 1][1] == 0:
return
for event in pygame.event.get():
if event.type == QUIT:
self.boolean = False
return
if event.type == KEYDOWN:
if event.key == K_UP and self.speed[1] != 10:
self.speed[0] = 0
self.speed[1] = -10
elif event.key == K_DOWN and self.speed[1] != -10:
self.speed[0] = 0
self.speed[1] = 10
elif event.key == K_LEFT and self.speed[0] != 10:
self.speed[0] = -10
self.speed[1] = 0
elif event.key == K_RIGHT and self.speed[0] != -10:
self.speed[0] = 10
self.speed[1] = 0
self.python.append(copy.deepcopy(
[self.python[self.python_len - 1][0] + self.speed[0], self.python[self.python_len - 1][1] + self.speed[1]]))
del self.python[0]
def rect(self, xy, color):
pygame.draw.rect(self.screen, color, (xy[0] - 5, xy[1] - 5, 10, 10))
def GameOver(self):
self.text = self.font.render('游戏结束,点击回车键继续', True, (225, 0, 0))
self.textRect = self.text.get_rect()
self.textRect.center = (300, 300)
while True:
self.screen.fi喵))
for event in pygame.event.get():
if event.type == QUIT:
self.boolean = False
return
if event.type == KEYDOWN:
if event.key == K_RETURN:
return
self.screen.blit(self.text, self.textRect)
pygame.display.update()
def main(self):
while self.boolean:
self.run()
if not self.boolean:
return
self.GameOver()
if not self.boolean:
return
self.__init__()
if __name__ == '__main__':
a = TanChiSheXiaoYouXi()
a.main()