ソースコード
import random
import pygame
import os
pygame.init()
pygame.mixer.init()
os.chdir(os.path.expanduser("~/デスクトップ/Vtuber_Srot")) #←パスを変える
screen = pygame.display.set_mode((1280,720))
pygame.display.set_caption("Vtuber_Srot")
rotating_sound = pygame.mixer.Sound(r"music\sound\スロットマシーンの回転short.mp3") #←サウンドパスを入力
reach_sound = pygame.mixer.Sound(r"music\sound\kei_2020_リーチ!.wav")
bingo_sound = pygame.mixer.Sound(r"music\sound\「やったーー!」.mp3")
black = (0,0,0)
font = pygame.font.SysFont("gabriola",100)←フォントを選択
back_ground = pygame.transform.scale(pygame.image.load(r"C:壁紙\srot用壁紙.png"),(1280,720)) #←パスを変える
bgm_dict ={
1: r"BGM素材のパス(3つ)",
2: r"music\bgm\gameover_zyanaimon_.mp3",
3: r"music\bgm\ぴこぴこネットワーク30分耐久.mp3",
}
number_dict = {
1:r"ここらへんに素材のパス",
2:r"",
3:r"",
4:r"",
5:r"",
6:r"",
7:r"",
8:r"",
9:r""
}
number_image = {i:pygame.transform.scale(pygame.image.load(f"{number_dict[i]}.png").convert_alpha(),(500,300)) for i in range(1,10)}
reel_surface = pygame.Surface((500,10*300),pygame.SRCALPHA)
for i in range(9):
reel_surface.blit(number_image[i+1],(0,i*300))
reel_surface.blit(number_image[1],(0,9*300))
def spinning_reel_blit(reel_surface,y_offset,x_pos):
screen.blit(reel_surface,(x_pos,250),area = pygame.Rect(0,y_offset % 2700,500,300))
def number_blit(left_number=None,center_number=None,right_number=None):
screen.blit(number_image[left_number],(0,250)) if left_number else None
screen.blit(number_image[center_number],(400,250)) if center_number else None
screen.blit(number_image[right_number],(800,250)) if right_number else None
def framework():
screen.blit(back_ground,(0,0))
pygame.draw.rect(screen,black,(50,240,1200,320),10)
pygame.draw.line(screen,black,(450,250),(450,550),10)
pygame.draw.line(screen,black,(850,250),(850,550),10)
screen.blit(coin_txt := font.render(f"{max(coin,0)}",True,black) ,(100,100))
screen.blit(font.render("medal",True,black) ,(200,100))
def play_random_bgm():
pygame.mixer.music.stop()
pygame.mixer.music.load(bgm_dict[random.choice(list(bgm_dict.keys()))])
pygame.mixer.music.play(-1)
class NormalReel:
def __init__(self,left_offset,center_offset,right_offset):
self.left_offset = left_offset
self.center_offset = center_offset
self.right_offset = right_offset
def normal_reel(self):
rotating_sound.play()
global coin
coin -= 3
for i in range(50):
self.left_offset += 500
self.center_offset += 500
self.right_offset += 500
framework()
spinning_reel_blit(reel_surface,self.left_offset,0)
spinning_reel_blit(reel_surface,self.center_offset+100,400)
spinning_reel_blit(reel_surface,self.right_offset+200,800)
pygame.display.update()
pygame.time.delay(50)
class ReachReel(NormalReel):
def __init__(self,center_offset,left_number,right_number):
self.center_offset = center_offset
self.left_number = left_number
self.right_number = right_number
def reach_reel(self):
self.center_offset = center_number*300
reach_sound.play()
for i in range(80):
self.center_offset += 30
framework()
spinning_reel_blit(reel_surface,self.center_offset,400)
number_blit(left_number=left_number,right_number=right_number)
pygame.display.update()
pygame.time.delay(50)
class BingoReel(ReachReel):
def __init__(self,left_number,center_number,right_number):
self.left_number = left_number
self.center_number = center_number
self.right_number = right_number
def bingo_reel(self):
bingo_sound.play()
framework()
number_blit(left_number,center_number,right_number)
pygame.display.update()
pygame.time.delay(2000)
class Lose(BingoReel):
def __init__(self,left_number,center_number,right_number):
super().__init__(left_number,center_number,right_number)
def lose(self):
framework()
number_blit(left_number,center_number,right_number)
pygame.display.update()
pygame.time.delay(1000)
running = True
coin = 50
left_number = center_number = right_number = random.randint(1,9)
play_random_bgm()
文字制限があるので、残りのコードはあと下記の非公開動画にて。すまぬ。
• ソースコード用
Информация по комментариям в разработке