问题遇到的现象和发生背景
如何在这个游戏中加入倒计时的功能
问题相关代码,请勿粘贴截图
import pygame
import random
import math
import sys
from dataclasses import dataclass
pygame.init()#游戏初始化
bg_image = pygame.image.load("0.png")#设置游戏界面
bg_image = pygame.transform.scale(bg_image, (bg_image.get_width()/3, bg_image.get_height()/3))
screen = pygame.display.set_mode((bg_image.get_width(), bg_image.get_height()))
score_value = 0#设置分数
font = pygame.font.Font('freesansbold.ttf',32)
count_now = 60
font = pygame.font.Font('freesansbold.ttf',32)
textX = 10#分数位置
textY = 10
textx = 250
texty = 10
count = 0
enemies = []#设置地鼠
NUM_COL = 5#设置地鼠出现的位置
NUM_ROW = 5
possible_enemy_pos = [(5,52),(170,52),(85,52),(250,52),(330,52),(5,125),(85,125),(170,125),(250,125),(330,125),
(5,198),(85,198),(170,198),(250,198),(330,198),(5,270),(85,270),(170,270),(250,270),(330,270),
(5,345),(85,345),(170,345),(250,345),(330,345)]#设置地鼠的具体位置
enemy_image = pygame.image.load("3.jpg")#导入地鼠图片
#enemy_image = pygame.transform.scale(enemy_image, (enemy_image.get_width() // 2,enemy_image.get_height() // 2))
ENEMY_RADIUS = min(enemy_image.get_width(), enemy_image.get_height())// 2.5
enemybeated_image = pygame.image.load("4.jpg")
GENERATE_ENEMY, APPEAR_INTERVAL = pygame.USEREVENT + 2, 500
pygame.time.set_timer(GENERATE_ENEMY, APPEAR_INTERVAL)
ENEMY_LIFE_SPAN = 3*1000
AGE_ENEMY, AGE_INTERVAL = pygame.USEREVENT+2, ENEMY_LIFE_SPAN//7
pygame.time.set_timer(AGE_ENEMY, AGE_INTERVAL)
@dataclass
class Enemy:
x: int
y: int
life: int = ENEMY_LIFE_SPAN
def check_exist(new_pos):
for enemy in enemies:
if new_pos == (enemy.x, enemy.y):
return True
return False
def generate_next_enemy_pos():#算出地鼠出现的位置
new_pos=()
while True:
grid_index = random.randint(0, NUM_ROW*NUM_COL-1)
new_pos = possible_enemy_pos[grid_index]
if not check_exist(new_pos):
break
return new_pos
def draw_enemies():#画地鼠
for enemy in enemies:
screen.blit(enemy_image, (enemy.x, enemy.y))
def show_score(x,y):#显示分数
global score_value
score = font.render("Score: "+str(score_value), True, (255, 255, 255))
screen.blit(score, (x, y))
def show_time(x,y):
global time_value
time = font.render("Time: "+str(count_now), True, (255, 255, 255))
screen.blit(time, (x, y))
def check_enemy_collision(clickX, clickY, enemyX, enemyY):#检查鼠标和点击的位置相不相同
enemyX,enemyY = enemyX + ENEMY_RADIUS, enemyY+ENEMY_RADIUS
distance = math.sqrt(math.pow(enemyX - clickX,2)+(math.pow(enemyY-clickY,2)))
return distance<ENEMY_RADIUS
def check_enemies_collision(click_pos, enemies):#检测鼠标点击的位置和地鼠的位置相不相同,并移除地鼠
for enemy in enemies:
if check_enemy_collision(click_pos[0], click_pos[1], enemy.x, enemy.y):
global score_value
score_value +=1
enemies.remove(enemy)
def age_enemy():
for enemy in enemies:
enemy.life -= 1000
def remove_died_enemies():
for enemy in enemies:
if enemy.life == 0:
enemies.remove(enemy)
cursor_image = pygame.image.load("1.png") # 设置鼠标图片
pygame.mouse.set_visible(False) # 隐藏鼠标
running = True#鼠标点击时发生的事情(关闭键和点地鼠
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONUP:
click_pos = pygame.mouse.get_pos()
check_enemies_collision(click_pos, enemies)
if event.type == AGE_ENEMY:
age_enemy()
remove_died_enemies()
if event.type == GENERATE_ENEMY:
if len(enemies) < NUM_COL*NUM_ROW:
new_pos = generate_next_enemy_pos()
enemies.append(Enemy(new_pos[0], new_pos[1]))
screen.blit(bg_image, (0, 0))#填充游戏背景
draw_enemies()#显示地鼠
show_score(textX, textY)#显示分数
show_time(textx, texty)
pointer_rect = cursor_image.get_rect()
pointer_rect.center = pygame.mouse.get_pos()
cursor_x = pointer_rect.x
cursor_y = pointer_rect.y
screen.blit(cursor_image, (cursor_x+20, cursor_y))
pygame.display.update()#更新游戏界面
我想要达到的结果
这上面有显示时间的地方,但我不会让这个60秒进行倒计时