猫史档案馆


【Python作品分享】时间掌控者【作品秀】

用户:转角遇到爱2cEL转角遇到爱2cEL查看:0 回复:1 评论:0 创建时间:2022-12-31T17:32:30


【作品展示】

center_image

 

【作品介绍】

这个小游戏通过Pygame制作,点击按钮会进行倒数5秒,数数会一直进行下去,但在界面上不会显示,当默数秒到达20的时候按下确定,看默数的时间是否与20接近!

 

【作品源代码】

# -*- coding: utf-8 -*-
import sys
import time
import os
import pygame
from pygame.locals import *
pygame.init()

os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (130, 60)
canvas = pygame.display.set_mode((1000, 600))
canvas.fill((0, 0, 0))

pygame.display.set_caption("时间掌控者")

# 添加背景图片
bg = pygame.image.load("Imgs/bg.jpg")
# 添加按钮图片
button = pygame.image.load("Imgs/button.png")
# 添加倒计时图片
n1 = pygame.image.load("Imgs/n1.jpg")
n2 = pygame.image.load("Imgs/n2.jpg")
n3 = pygame.image.load("Imgs/n3.jpg")
n4 = pygame.image.load("Imgs/n4.jpg")
n5 = pygame.image.load("Imgs/n5.jpg")
# 添加感知等级图片
king = pygame.image.load("Imgs/king.png")
diamond = pygame.image.load("Imgs/diamond.png")
bronze = pygame.image.load("Imgs/bronze.png")


def handleEvent():
	for event in pygame.event.get():
		if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
			pygame.quit()
			sys.exit()
		click(event)


a = 0


def click(event):
	global a
	global startTime
	global lastTime
	if event.type == MOUSEBUTTONDOWN and event.button == 1:
		canvas.blit(bg, (0, 0))
		canvas.blit(button, (350, 330))
		if a == 0:
			fillText('世界上最快而又最慢,', (200, 150))
			fillText('最长而又最短,', (580, 150))
			fillText('最平凡而又最珍贵,', (350, 200))
			fillText('最易被忽视而又最令人后悔的是什么?', (200, 250))
			a = a + 100
		elif a == 100:
			fillText('时	间', (420, 200))
			a = a + 100
		elif a == 200:
			fillText('接下来敢不敢接受挑战测试一下你的时间的感知度呢?', (40, 200))
			a = a + 100
		elif a == 300:
			fillText('游戏规则:', (35, 100))
			fillText('游戏开始屏幕进行计时显示,当显示到5后,提示消失,', (35, 150))
			fillText('根据自己对时间的感知判断,当时间到达20按下按钮', (35, 200))
			fillText('真正的勇士敢于按下这个按钮', (250, 450))
			a = a + 100
		elif a == 400:
			fillText('游戏开始', (420, 100))
			startTime = time.time()
			canvas.blit(n1, (0, 0))
			pygame.time.delay(1000)
			pygame.display.update()
			canvas.blit(n2, (0, 0))
			pygame.time.delay(1000)
			pygame.display.update()
			canvas.blit(n3, (0, 0))
			pygame.time.delay(1000)
			pygame.display.update()
			canvas.blit(n4, (0, 0))
			pygame.time.delay(1000)
			pygame.display.update()
			canvas.blit(n5, (0, 0))
			pygame.time.delay(1000)
			pygame.display.update()
			canvas.blit(bg, (0, 0))
			canvas.blit(button, (350, 330))
			fillText('游戏继续', (420, 100))
			pygame.time.delay(1000)
			pygame.display.update()
			a = a + 100
		elif a == 500:
			canvas.blit(bg, (0, 0))
			lastTime = time.time()
			isIntervalTime(lastTime)


def fillText(text, position):
	# 设置字体
	TextFont = pygame.font.Font('fonts/font3.ttf', 40)
	# 设置字体其他样式
	newText = TextFont.render(text, True, (255, 255, 255))
	canvas.blit(newText, position)


canvas.blit(bg, (0, 0))
canvas.blit(button, (350, 330))
startTime = 0
interval = 20
lastTme = 0


def isIntervalTime(lastTme):
	if int(lastTme-startTime) >= interval-5 and int(lastTme-startTime) <= interval+5:
		fillText('你的感知时间为:'+str(int(lastTme-startTime)), (330, 100))
		fillText('这么接近!是魔鬼吧!', (320, 150))
		canvas.blit(king, (400, 200))
	elif int(lastTme-startTime) >= interval-10 and int(lastTme-startTime) <= interval-5 or int(lastTme-startTime) >= interval+5 and int(lastTme-startTime) <= interval+10:
		fillText('你的感知时间为:'+str(int(lastTme-startTime)), (330, 100))
		fillText('加油吧少年', (400, 150))
		canvas.blit(diamond, (400, 200))
	else:
		fillText('你的感知时间为:'+str(int(lastTme-startTime)), (330, 100))
		fillText('太菜了', (350, 150))
		canvas.blit(bronze, (400, 200))


while True:
	# 监听有没有按下退出按钮
	handleEvent()
	# 更新屏幕内容
	pygame.display.update()
	# 延时1秒
	pygame.time.delay(1000)

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
潘晨XkFX潘晨XkFX

12332143

点赞0


评论