猫史档案馆


Python贪吃蛇小游戏,项目我开源了Q_Q

用户:科学边界科学边界查看: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()


回复

上一页1 页 / 共 1下一页
thewindows7thewindows7

正式Python3用不了

点赞0


评论