一个叫做dyh的同学过生日,做了一个小作品送给他。
游戏特点:
-
游戏有两个人物可选择(用的两张不同照片表示,照片来自好几年前上课照片,简单处理了一下)
-
4级难度选择
-
画面气球会动,营造氛围
-
游戏带有生日背景音乐
-
接到礼物音效
-
碰到不同的礼物会出现不同的祝福语,祝福语会悬挂在头上持续1秒钟,生日快乐的祝福语出现概率最高50%,你真帅20%,厉害20%,666 10%。
import pygame import sys import pyautogui import random import time # 人物 dyh_dict = {'1号dyh':'dyh1.png','2号dyh':'dyh2.png'} # 选择游戏人物 dyh_ask = pyautogui.confirm('选择游戏人物', buttons=['1号dyh', '2号dyh']) dyh = dyh_dict[dyh_ask] # 选择游戏模式 mode = {'easy': 10, 'medium': 15, 'difficult': 20, 'super': 30} mode_ask = pyautogui.confirm('选择游戏模式', buttons=['easy', 'medium', 'difficult','super']) # 祝福语 wishes = ["生日快乐","你真帅",'厉害',"666"] # 初始化pygame pygame.init() # 设置窗口的大小,单位为像素 screen = pygame.display.set_mode((1200, 800)) # 设置窗口标题 pygame.display.set_caption('生日快乐') # 加载字体 my_font = pygame.font.Font("anna.ttf",40) # 加载背景音乐 pygame.mixer.init() pygame.mixer.music.load("birthday.mp3") pygame.mixer.music.play(-1, 0) # 加载音效 sound = pygame.mixer.Sound('pop.mp3') # 加载气球素材 balloon1 = pygame.image.load("balloon1.png") balloon1 = pygame.transform.scale(balloon1, (200, 200)) #转化大小 balloon2 = pygame.image.load("balloon2.png") balloon2 = pygame.transform.scale(balloon2, (200, 200)) #转化大小 angle = 20 balloon1_list = [] balloon2_list = [] for i in range(5): balloon1= pygame.transform.rotate(balloon1, angle) #旋转 balloon2 = pygame.transform.rotate(balloon2, angle) #旋转 balloon1_list.append(balloon1) balloon2_list.append(balloon2) angle-=10 # 气球计数 i = 0 # 加载主角dyh dyh_img = pygame.image.load(dyh) dyh_img_size = dyh_img.get_size() if dyh=='dyh2.png': dyh_img_new_size = (dyh_img_size[0]//2,dyh_img_size[1]//2) dyh_img = pygame.transform.scale(dyh_img, dyh_img_new_size) dyh_img_size = dyh_img.get_size() # 初始主角位置 pos_x = (1200-dyh_img_size[0])//2 pos_y = 800-dyh_img_size[1] # 加载礼物 gift_list = [] for i in range(1,8): gift_img = pygame.image.load(f'{i}.png') gift_img_size = gift_img.get_size() gift_img_new_size = (gift_img_size[0]//2,gift_img_size[1]//2) gift_img = pygame.transform.scale(gift_img, gift_img_new_size) gift_list.append(gift_img) gift_x = random.randint(200,1000) gift_y = random.randint(-300,0) gift_img =random.choice(gift_list) gift_img_size =gift_img.get_size() # 时钟 clock = pygame.time.Clock() # 是否显示祝福语开关 is_display = False # 程序主循环 while True: # 每秒30次 clock.tick(10) # 事件处理 for event in pygame.event.get(): # 判断事件是否为退出事件 if event.type == pygame.QUIT: # 退出pygame pygame.quit() # 退出系统 sys.exit() key_list = pygame.key.get_pressed() if key_list[pygame.K_RIGHT]: pos_x += 20 elif key_list[pygame.K_LEFT]: pos_x -= 20 # 逻辑处理 # gift 下落 gift_y += mode[mode_ask] if gift_y>800: gift_x = random.randint(200,1000) gift_y = random.randint(-300,0) gift_img =random.choice(gift_list) gift_img_size =gift_img.get_size() # 碰撞检测 if gift_y + gift_img_size[1] > pos_y: if (pos_x < gift_x < pos_x +dyh_img_size[0]) or (pos_x < gift_x+gift_img_size[0] < pos_x +dyh_img_size[0]): wishesImage = my_font.render(random.choices(wishes,[0.5, 0.2, 0.2, 0.1],k=1)[0], True, (255,0,0)) sound.play() is_display = True start = time.time() gift_x = random.randint(200,1000) gift_y = random.randint(-300,0) gift_img =random.choice(gift_list) gift_img_size =gift_img.get_size() # 渲染图形 # 绘制背景 screen.fill((0,255,255)) # 绘制气球 i = i + 1 screen.blit(balloon1_list[i%5],(50,100)) screen.blit(balloon2_list[i%5],(950,150)) # 绘制dyh screen.blit(dyh_img,(pos_x,pos_y)) # 绘制gift screen.blit(gift_img,(gift_x,gift_y)) # 绘制文字 textImage = my_font.render('mode:'+ mode_ask, True, (255,0,0)) screen.blit(textImage, (1000, 10)) # 碰到礼物就绘制祝福语,持续两秒 if is_display: end = time.time() if end-start<1: screen.blit(wishesImage, (pos_x, pos_y)) else: is_display=False # 刷新屏幕 pygame.display.update()
浙公网安备 33010602011771号