import pygame
import random
import time
MAIN = True
def show_score():
num = str(SCORE)
x = 0
y = 0
for i in num:
i = int(i)
screen.blit(number_list[i], (x, y))
x += 20
def manage():
global SCORE
global BLOOD
for i in range(NUMBER):
if (golds[i][0] >= RELX_X and golds[i][0] <= RELX_X + relx_wide) or (
golds[i][0] + gold_wide >= RELX_X and golds[i][0] + gold_wide <= RELX_X + relx_wide):
if (golds[i][1] >= RELX_Y and golds[i][1] <= RELX_Y + relx_high) or (
golds[i][1] + gold_high >= RELX_Y and golds[i][1] + gold_high <= RELX_Y + relx_high):
SCORE += seeps[i]
init_gold(i)
for i in range(command()):
if (booms[i][0] >= RELX_X and booms[i][0] <= RELX_X + relx_wide) or (
booms[i][0] + BOOM_SIDE >= RELX_X and booms[i][0] + BOOM_SIDE <= RELX_X + relx_wide):
if (booms[i][1] >= RELX_Y and booms[i][1] <= RELX_Y + relx_high) or (
booms[i][1] + BOOM_SIDE >= RELX_Y and booms[i][1] + BOOM_SIDE <= RELX_Y + relx_high):
BLOOD -= 1
init_boom(i)
if SCORE >= 500:
global blood_xy
x, y = blood_xy
if (x >= RELX_X and x <= RELX_X + relx_wide) or (
x + BLOOD_SIDE >= RELX_X and x + BLOOD_SIDE <= RELX_X + relx_wide):
if (y >= RELX_Y and y <= RELX_Y + relx_high) or (
y + BLOOD_SIDE >= RELX_Y and y + BLOOD_SIDE <= RELX_Y + relx_high):
BLOOD += 1
x = random.randint(0, wide - BLOOD_SIDE)
y = random.randint(-100, -BLOOD_SIDE)
blood_xy = (x, y)
def show_hp():
x = wide - 20
y = 0
for i in range(BLOOD):
screen.blit(blood, (x, y))
if x - 20 <= 400:
x = wide - 20
y += 20
else:
x -= 20
def relx_move():
if STAND:
if DIRECTION:
screen.blit(relx_right, (RELX_X, RELX_Y))
else:
screen.blit(relx_left, (RELX_X, RELX_Y))
else:
if DIRECTION:
if RIGHT:
screen.blit(right_right, (RELX_X, RELX_Y))
else:
screen.blit(right_left, (RELX_X, RELX_Y))
else:
if LEFT:
screen.blit(left_right, (RELX_X, RELX_Y))
else:
screen.blit(left_left, (RELX_X, RELX_Y))
def command():
num = 0
times = SCORE / 100
if times > NUMBER_BOOMS:
times = NUMBER_BOOMS
num += int(times)
return num
def show_clock():
global TIME, START_TIME
x = wide / 2
y = 0
if TIME >= 100:
number = int(TIME / 100)
number = str(number)
for i in number:
i = int(i)
a = number_list[i]
a = pygame.transform.scale(a, (10, 10))
screen.blit(a, (x, y))
x += 10
c = pygame.time.get_ticks()
if c / 10000 >= START_TIME:
TIME += 1
START_TIME = c / 10000
def judge():
keys = True
if DIRECTION:
if (RELX_X + SEEP) + relx_wide >= wide:
keys = False
else:
if RELX_X - SEEP <= 0:
keys = False
return keys
def main_game():
updates()
if DIFFICULTY_MODE:
show_hp()
relx_move()
manage()
show_score()
show_clock()
pygame.display.update()
CLOCK.tick(60)
def init_gold(i):
golds[i][1] = -50
golds[i][0] = random.randint(0, 550)
seeps[i] = random.randint(3, 8)
def init_boom(i):
booms[i][1] = -50
booms[i][0] = random.randint(0, 550)
booms_seeps[i] = random.randint(3, 10)
def updates():
screen.blit(bk, (0, 0))
for i in range(NUMBER):
screen.blit(gold, golds[i])
fall()
if DIFFICULTY_MODE:
for i in range(command()):
screen.blit(boom, booms[i])
fall_booms()
screen.blit(blood, blood_xy)
if SCORE >= 500:
fall_blood()
def fall():
for i in range(NUMBER):
if golds[i][1] + gold_wide >= 850:
init_gold(i)
else:
golds[i][1] += seeps[i]
def fall_booms():
for i in range(command()):
if booms[i][1] + BOOM_SIDE >= high + BOOM_SIDE:
init_boom(i)
else:
booms[i][1] += booms_seeps[i]
def fall_blood():
global blood_xy
x, y = blood_xy
if y + BOOM_SIDE >= high + BLOOD_SIDE:
x = random.randint(0, wide - BLOOD_SIDE)
y = random.randint(-100, -BLOOD_SIDE)
else:
y += 10
blood_xy = (x, y)
while MAIN:
size = wide, high = 600, 800
relx_size = relx_wide, relx_high = 50, 80
gold_size = gold_wide, gold_high = 50, 50
START_TIME = pygame.time.get_ticks() / 10000
TIME = 0
NUMBER = 10 # 金币数量
NUMBER_BOOMS = 20 # 炸弹数量
FONT_SIZE = 50
BOOM_SIDE = 30
SCORE_SIZE = (20, 20)
RECT_X = 100
RELX_X = 250
RELX_Y = 720
SCORE = 0
BLOOD = 5
BLOOD_SIDE = 20
RIGHT = True
LEFT = True
SEEP = 5
START_KEY = False
START_KEY1 = False
START_KEY2 = False
STAND = True
DIRECTION = True
KEEP_ON = False
key = True
DIFFICULTY_MODE = False
pygame.init()
screen = pygame.display.set_mode(size)
# 加载图片
icon = pygame.image.load("金币.png").convert()
game_over = pygame.image.load("game over.png").convert()
boom = pygame.image.load("炸弹.png")
gold = pygame.image.load("金币.png")
bk = pygame.image.load("背景.png")
blood = pygame.image.load("爱心.png")
relx_right = pygame.image.load("right.png")
relx_left = pygame.image.load("left.png")
right_right = pygame.image.load("right_right.png")
right_left = pygame.image.load("right_left.png")
left_right = pygame.image.load("left_right.png")
left_left = pygame.image.load("left_left.png")
number_list = []
effects = []
for i in range(10):
x = pygame.image.load("{}.png".format(i))
x = pygame.transform.scale(x, SCORE_SIZE)
number_list.append(x)
for i in range(4):
x = pygame.image.load("boom{}.png".format(i))
x = pygame.transform.scale(x, gold_size)
effects.append(x)
# 设置大小
bk = pygame.transform.scale(bk, size)
game_over = pygame.transform.scale(game_over, size)
icon = pygame.transform.scale(icon, (50, 50))
gold = pygame.transform.scale(gold, gold_size)
boom = pygame.transform.scale(boom, (BOOM_SIDE, BOOM_SIDE))
blood = pygame.transform.scale(blood, SCORE_SIZE)
relx_right = pygame.transform.scale(relx_right, relx_size)
relx_left = pygame.transform.scale(relx_left, relx_size)
right_right = pygame.transform.scale(right_right, relx_size)
right_left = pygame.transform.scale(right_left, relx_size)
left_right = pygame.transform.scale(left_right, relx_size)
left_left = pygame.transform.scale(left_left, relx_size)
pygame.display.set_caption("gold game")
CLOCK = pygame.time.Clock()
# 加载
pygame.display.set_icon(icon)
pygame.font.init()
font = pygame.font.Font("text.ttf", FONT_SIZE)
golds = []
seeps = []
booms = []
booms_seeps = []
blood_xy = (random.randint(0, wide - BLOOD_SIDE), random.randint(-100, -BLOOD_SIDE))
for i in range(NUMBER):
x = random.randint(0, 550)
y = random.randint(-1000, -50)
seep = random.randint(3, 8)
seeps.append(seep)
golds.append([x, y])
for i in range(NUMBER_BOOMS):
x = random.randint(0, 550)
y = random.randint(-2000, -50)
boom_seep = random.randint(3, 10)
booms_seeps.append(boom_seep)
booms.append([x, y])
# 界面
color_font = (0, 255, 0)
color_bk = (255, 0, 0)
text = font.render("轻松模式", True, color_font, color_bk)
text2 = font.render("困难模式", True, color_font, color_bk)
screen.blit(text, (RECT_X, RECT_X))
screen.blit(text2, (RECT_X, RECT_X + 51))
pygame.display.flip()
while key:
for event in pygame.event.get():
if event.type == pygame.QUIT:
MAIN = False
key = False
if event.type == pygame.MOUSEBUTTONDOWN:
x, y = pygame.mouse.get_pos()
if x >= RECT_X and x <= RECT_X + 156:
if y >= RECT_X and y <= RECT_X + 50:
START_KEY = True
if x >= RECT_X and x <= RECT_X + 156:
if y >= RECT_X + 51 and y <= RECT_X + 101:
START_KEY2 = True
if event.type == pygame.MOUSEBUTTONUP:
x, y = pygame.mouse.get_pos()
if START_KEY:
if x >= RECT_X and x <= RECT_X + 156:
if y >= RECT_X and y <= RECT_X + 50:
START_KEY1 = True
if START_KEY2:
if x >= RECT_X and x <= RECT_X + 156:
if y >= RECT_X + 51 and y <= RECT_X + 101:
DIFFICULTY_MODE = True
if event.type == pygame.KEYDOWN:
if chr(event.key) == 'a':
STAND = False
DIRECTION = False
elif chr(event.key) == 'd':
STAND = False
DIRECTION = True
KEEP_ON = True
if event.type == pygame.KEYUP:
STAND = True
KEEP_ON = False
if KEEP_ON:
if DIRECTION:
if judge():
x = random.randint(0, 1)
if x == 1:
RIGHT = True
else:
RIGHT = False
RELX_X += SEEP
else:
if judge():
x = random.randint(0, 1)
if x == 1:
LEFT = True
else:
LEFT = False
RELX_X -= SEEP
if START_KEY1:
DIFFICULTY_MODE = False
main_game()
if DIFFICULTY_MODE:
START_KEY1 = False
main_game()
if BLOOD <= 0:
screen.blit(game_over, (0, 0))
pygame.display.update()
time.sleep(5)
key = False
pygame.quit()
提取码:72jx