提交 c63aef77 编写于 作者: Tough_Shu's avatar Tough_Shu

更新Heart.png, Enemy.png, Hole.png, Engine.wav, Player.png, Score.png, Star.png,...

更新Heart.png, Enemy.png, Hole.png, Engine.wav, Player.png, Score.png, Star.png, ranking.py, main.py, Bad.mp3
上级
文件已添加
文件已添加
Heart.png

315 字节

Hole.png

364 字节

Score.png

266 字节

Star.png

258 字节

import pygame
from pygame.locals import(
K_LEFT,
K_RIGHT,
QUIT,
KEYUP,
K_UP,
K_DOWN,
K_ESCAPE)
from random import randint
from ranking import rank
from time import sleep
pygame.init()
# Time
FPS = 60
FramePerSec = pygame.time.Clock()
# Predefined some colors
BLUE = (0, 0, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLACK = (0, 0, 0)
# WHITE = (255, 255, 255)
GRAY = (168, 168, 168)
# Screen information
SCREEN_WIDTH = 400
SCREEN_HEIGHT = 600
DISPLAYSURF = pygame.display.set_mode((400, 600))
DISPLAYSURF.fill(GRAY)
pygame.display.set_caption("小车游戏")
# Mouse
pygame.mouse.set_visible(False)
# Sound
bgm = pygame.mixer.Sound("Bad.mp3")
enginesound = pygame.mixer.Sound("Engine.wav")
channel = bgm.play()
def sound_init():
global bgm, channel
bgm.play()
bgm.set_volume(0.6)
channel.set_volume(0.5)
class Enemy(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load("Enemy.png")
self.rect = self.image.get_rect()
self.rect.center = (randint(40, SCREEN_WIDTH - 40), 0)
def move(self):
global score, E2
self.rect.move_ip(0, 10)
end_1 = self.rect.colliderect(E2.rect)
end_2 = (self.rect.bottom > 600)
if end_1 or end_2:
if end_2:score += 1
self.rect.top = 0
self.rect.center = (randint(30, 370), 0)
def draw(self, surface):
surface.blit(self.image, self.rect)
class Hole(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load("Hole.png")
self.rect = self.image.get_rect()
self.rect.center = (randint(40, SCREEN_WIDTH - 40), 0)
def move(self):
self.rect.move_ip(0, 5)
if (self.rect.bottom > 600):
self.rect.top = 0
self.rect.center = (randint(30, 370), 0)
def draw(self, surface):
surface.blit(self.image, self.rect)
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load("Player.png")
self.rect = self.image.get_rect()
self.rect.center = (160, 520)
def update(self):
global speed
pressed_keys = pygame.key.get_pressed()
if pressed_keys[K_UP]:self.rect.move_ip(0, -speed)
if (self.rect.bottom < 600):
if pressed_keys[K_DOWN]:self.rect.move_ip(0,speed)
if self.rect.left - speed > 0 and pressed_keys[K_LEFT]:
self.rect.move_ip(-speed, 0)
elif pressed_keys[K_LEFT]:
self.rect.left = 0
if self.rect.left < SCREEN_WIDTH - 40 and pressed_keys[K_RIGHT]:
self.rect.move_ip(speed, 0)
elif pressed_keys[K_RIGHT]:
self.rect.left = SCREEN_WIDTH - 40
def draw(self, surface):
surface.blit(self.image, self.rect)
class Star(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load("Star.png")
self.rect = self.image.get_rect()
self.rect.center = (randint(40, SCREEN_WIDTH - 40), 0)
def move(self):
global speed, P1
self.rect.move_ip(0, 5)
end_1 = (self.rect.bottom > 600)
end_2 = self.rect.colliderect(P1.rect)
if end_2 or end_1:
speed += randint(1, 2) * int(end_2)
self.rect.top = 0
self.rect.center = (randint(30, 370), 0)
def draw(self, surface):
surface.blit(self.image, self.rect)
class Heart(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load("Heart.png")
self.rect = self.image.get_rect()
self.rect.center = (randint(40, SCREEN_WIDTH - 40), 0)
def move(self):
global lives, P1
self.rect.move_ip(0, 4)
end_1 = (self.rect.bottom > 600)
end_2 = self.rect.colliderect(P1.rect)
if end_2 or end_1:
if end_2 and lives < 10:
lives = 10
self.rect.top = 0
self.rect.center = (randint(30, 370), 0)
def draw(self, surface):
surface.blit(self.image, self.rect)
class Score(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load("Score.png")
self.rect = self.image.get_rect()
self.rect.center = (randint(40, SCREEN_WIDTH - 40), 0)
def move(self):
global score, P1
self.rect.move_ip(0, 5)
end_1 = (self.rect.bottom > 600)
end_2 = self.rect.colliderect(P1.rect)
if end_2 or end_1:
score += 100 * int(end_2)
self.rect.top = 0
self.rect.center = (randint(30, 370), 0)
def draw(self, surface):
surface.blit(self.image, self.rect)
P1 = Player()
S1 = Star()
S2 = Score()
E1 = Enemy()
E2 = Hole()
H1 = Heart()
speed = 5
running = True
score = 0
lives = 10
font = pygame.font.SysFont('Times', 30)
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
elif event.type == KEYUP:
running = not event.key == K_ESCAPE
if event.key == K_UP or event.key == K_DOWN or event.key == K_LEFT or event.key == K_RIGHT:
enginesound.play()
else:
enginesound.stop()
if not pygame.mixer.get_busy():
sound_init()
P1.update()# Move
E1.move()
E2.move()
S1.move()
S2.move()
H1.move()
DISPLAYSURF.fill(GRAY)
P1.draw(DISPLAYSURF)
E1.draw(DISPLAYSURF)
E2.draw(DISPLAYSURF)
S1.draw(DISPLAYSURF)
S2.draw(DISPLAYSURF)
H1.draw(DISPLAYSURF)
if P1.rect.colliderect(E1.rect):
lives -= 0.1
if P1.rect.colliderect(E2.rect):
lives = 0
if lives <= 0:
DISPLAYSURF.fill(RED)
text = font.render("GAME\nOVER", False, BLACK, BLUE)
DISPLAYSURF.blit(text, (100, 300))
lives = 0
running = False
text = font.render(str(score), True, BLUE, GREEN)
DISPLAYSURF.blit(text, (0, 0))
text = font.render(str(lives), True, GREEN, RED)
DISPLAYSURF.blit(text, (370, 0))
text = font.render(str(speed), True, RED, BLUE)
DISPLAYSURF.blit(text, (100, 0))
pygame.display.update()
FramePerSec.tick(FPS)
pygame.mixer.fadeout(5000)
if lives <= 0:sleep(5)
pygame.quit()
print(score, end = rank(score))
def rank(score):
rank = ""
if score >= 0:
rank = "Nooblet"
if score >= 10:
rank = "Noob"
if score >= 50:
rank = "Newbie"
if score >= 70:
rank = "Novice"
if score >= 150:
rank = "Neophyte"
if score >= 200:
rank = "Dabbler"
if score >= 250:
rank = "Initiate"
if score >= 300:
rank = "Apprentice"
if score >= 350:
rank = "Pupil"
if score >= 400:
rank = "Learner"
if score >= 450:
rank = "Practitioner"
if score >= 500:
rank = "Semi-Pro"
if score >= 600:
rank = "Adept"
if score >= 700:
rank = "Expert"
if score >= 800:
rank = "Pro"
if score >= 900:
rank = "Wizard"
if score >= 1000:
rank = "Master"
if score >= 2500:
rank = "Scholar"
if score >= 5000:
rank = "Grandmaster"
if score >= 10000:
rank = "Legend"
if score >= 50000:
rank = "Chad"
if score >= 100000:
rank = "⭐Millionaire"
return rank
if __name__ == "__main__":print(rank(100000))# Goodest
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册