实现效果
介绍
本项目使用Python的pygame库实现了一个简单的幸运大转盘抽奖小游戏。玩家可以按下键盘上的任意键启动转盘,转盘开始旋转,当转盘停止旋转后,会随机抽取一个奖项,并在界面上显示出来。
环境配置
- Python 3.x
- Pygame
安装Pygame:
pip install pygame
项目分布
- 幸运大转盘图片文件(“幸运大转盘.png"和"1.png”)
- 代码文件(包括主程序和图片加载)
详细代码
import pygame, sys
import math
import random
pygame.init() # 初始化pygame类
screen = pygame.display.set_mode((600, 600)) # 设置窗口大小
pygame.display.set_caption('幸运大转盘') # 设置窗口标题
tick = pygame.time.Clock()
fps = 10 # 设置刷新率,数字越大刷新率越高
picture = pygame.transform.scale(pygame.image.load("./幸运大转盘.png"), (600, 600))
bg = picture.convert()
picture = pygame.transform.scale(pygame.image.load("./1.png"), (30, 230))
hand = picture.convert_alpha()
rewardDict = {
'first level': (0, 0.03),
'second level': (0.03, 0.2),
'third level': (0.2, 1)
}
def rewardFun():
"""用户的得奖等级"""
number = random.random()
for k, v in rewardDict.items():
if v[0] <= number < v[1]:
return k
def start():
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
pygame.quit()
sys.exit()
else:
return
screen.blit(bg, (0, 0))
newRect = hand.get_rect(center=(300, 150))
screen.blit(hand, newRect)
pygame.draw.circle(screen, (255, 255, 0), (300, 300), 50)
textFont = pygame.font.Font("simsun.ttc", 80) # 使用支持中文的字体
textSurface = textFont.render("开始", True, (110, 55, 155)) # 使用中文文本
screen.blit(textSurface, (270, 230))
pygame.display.update()
def middle():
angle = 0
while True:
posx = 300 + int(150 * math.sin(angle * math.pi / 180))
posy = 300 - int(150 * math.cos(angle * math.pi / 180))
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.blit(bg, (0, 0))
newhand = pygame.transform.rotate(hand, -angle)
newRect = newhand.get_rect(center=(posx, posy))
screen.blit(newhand, newRect)
pygame.draw.circle(screen, (255, 255, 0), (300, 300), 50)
angle += 10
if angle > 500:
k = rewardFun()
end(k)
break
tick.tick(fps)
pygame.display.flip() # 刷新窗口
def end(k):
textFont = pygame.font.Font("simsun.ttc", 36) # 使用支持中文的字体
textSurface = textFont.render("恭喜你,你抽中了 %s" % k, True, (255, 255, 255))
textRect = textSurface.get_rect(center=(300, 300))
buttonFont = pygame.font.Font("simsun.ttc", 24) # 使用支持中文的字体
buttonTextSurface = buttonFont.render("确定", True, (255, 255, 255))
buttonRect = buttonTextSurface.get_rect(center=(300, 350))
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN:
if buttonRect.collidepoint(event.pos):
return # 确定按钮被点击后返回
screen.blit(bg, (0, 0))
pygame.draw.rect(screen, (0, 0, 0), (textRect.left - 10, textRect.top - 10, textRect.width + 20, textRect.height + 20), 0)
pygame.draw.rect(screen, (100, 100, 100), buttonRect, 0)
screen.blit(textSurface, textRect)
screen.blit(buttonTextSurface, buttonRect)
pygame.display.flip()
if __name__ == '__main__':
while True: # 包装主循环
start()
middle()
总结
通过使用pygame库,我们成功地实现了一个简单的幸运大转盘抽奖小游戏。玩家可以通过按键启动转盘,然后等待转盘旋转结束,最终获得随机抽取的奖项。这是一个有趣且简单的小游戏项目,适合初学者学习pygame库的使用。