首頁 > 軟體

Python+Pygame實戰之炫舞小遊戲的實現

2022-12-03 14:01:05

導語

昨天去老姐家裡蹭飯,進門的時候就看到佳佳妹(我姐的女兒)低頭霹靂吧啦一頓操作猛如虎,飯好了都還在玩兒,什麼東西這麼好玩?一走進就看到這是一款酷似炫舞的小遊戲。(死去的回憶突然在攻擊我~沒想到現在還有這款遊戲就是不知道升級了多少次啦)

不知道你們還記不記得曾經有個風靡一時的舞蹈遊戲炫舞。

我讀小學的時候,大概是09年吧,這個遊戲非常火爆,如果你去網咖,十個女生裡,有十一個都是在玩炫舞,像我就是其中的一員。那個時候還沒有英雄聯盟王者榮耀,女生玩炫舞,男生玩地下城穿越火線!

提到QQ炫舞,可能很多人想到的第一個詞是“青春”。恍然間,這個承載了無數人回憶與時光的遊戲品牌,已經走到了第十幾個年頭。今天小編就來給大家嘗試做一款簡單的簡陋版的小遊戲——《舞動青春*炫舞》。(其實是簡單的五分之一的成品,感覺今天洗頭髮又要掉一堆了)

一、環境安裝

小編使用的環境:Python3、Pycharm社群版、pygame模組,部分自帶的就不一一 展示啦。

模組安裝:pip install -i https://pypi.douban.com/simple/+模組名 

背景圖片大家可以自己修改的啦~嘿嘿怎麼好看怎麼來撒!

二、程式碼展示

主程式:

import pygame
import sys
import random
 
import time
import threading
 
random.random()
flag=1
 
# 建立執行緒物件
 
 
# 初始化pygame
pygame.init()
# 定義變數
size = width, height = 1024,768
bg = (0, 0, 0)
# 載入logo圖
 
img = pygame.image.load("shang_hong.png")
# 獲取影象的位置
 
# 建立一個主視窗
screen = pygame.display.set_mode(size)
 
# 標題
pygame.display.set_caption("炫舞——簡潔版")
    # 建立遊戲主迴圈
clock = pygame.time.Clock()  
sudu=0.5
list=[]
list1=[]
 
def fuyuan():
    x=50
    global list1,list
    list.clear()
    for i in range(1,10):
        
        list.append(list1[i-1])
        
    for i in list1:
        
        if i==1:
            img = pygame.image.load("zuo_hong.png")
            screen.blit(img, [x,500])
            pygame.display.flip()
        if i==2:
            img = pygame.image.load("shang_hong.png")
            screen.blit(img, [x,500])
            pygame.display.flip()
        if i==3:
            img = pygame.image.load("you_hong.png")
            screen.blit(img, [x,500])
            pygame.display.flip()
        if i==4:
            img = pygame.image.load("xia_hong.png")
            screen.blit(img, [x,500])
            pygame.display.flip()
        x=x+113
    x=50                    
def chushi():
    global x
    x=50
 
    screen.fill(bg)
    global list
    global list1
    list.clear()
    list1.clear()
    for i in range(1,9):
        i=random.randint(1,4)
        list.append(i)
    list.append(5)
    #print(list)
  
    
    for i in range(1,10):   
        list1.append(list[i-1])
    #print(list1)
    
    img = pygame.image.load("jindu.jpg")
    screen.blit(img, [100,400])
    pygame.display.flip()
    x=50
    for i in list:
        
        if i==1:
            img = pygame.image.load("zuo_hong.png")
            screen.blit(img, [x,500])
            pygame.display.flip()
        if i==2:
            img = pygame.image.load("shang_hong.png")
            screen.blit(img, [x,500])
            pygame.display.flip()
        if i==3:
            img = pygame.image.load("you_hong.png")
            screen.blit(img, [x,500])
            pygame.display.flip()
        if i==4:
            img = pygame.image.load("xia_hong.png")
            screen.blit(img, [x,500])
            pygame.display.flip()
        x=x+113
    x=50
        
x1=150
flag=1
def yidong():
    #print("sss")
    global flag
    global list
    global x1
    global clock
    clock.tick(800)
    #print(x1)
    img = pygame.image.load("jindu.jpg")
    screen.blit(img, [100,400])   
    pygame.draw.circle(screen,(232,0,176),(x1,431),20,1000)
    #print(x1)
    pygame.display.flip()
    x1=x1+sudu
    if x1>780:
        #print(len(list))
        if len(list)==0:
            while x1<780:
                flag=0
                #print(x1)
                clock.tick(800)
                #print(x1)
                img = pygame.image.load("jindu.jpg")
                screen.blit(img, [100,400])   
                pygame.draw.circle(screen,(232,0,176),(x1,431),20,1000)
                pygame.display.flip()
                x1=x1+sudu 
            flag=1    
            #chushi()
            #list.clear()
            
            
        x1=150 
        if len(list)>0:
             
            screen.fill((0,0,0))
            miss()
            while x1<780:
                flag=0
                #print(x1)
                clock.tick(800)
                #print(x1)
                img = pygame.image.load("jindu.jpg")
                screen.blit(img, [100,400])   
                pygame.draw.circle(screen,(232,0,176),(x1,431),20,1000)
                pygame.display.flip()
                x1=x1+sudu
            x1=150    
            flag=1
        chushi()
   
 
class task(threading.Thread):
     def __init__(self):
         threading.Thread.__init__(self)
         self.thread_stop = False
     def run(self):
        while not self.thread_stop:
            yidong()
        
        
           
     def stop(self):
        self.thread_stop = True 
        
t1 = task()
t1.start()
 
#yidong()
 
 
 
 
chushi()
x=50
def miss():
    font = pygame.font.Font(None, 150)
    text = font.render('Miss!', True, (232,0,176), (0, 0, 0))
    screen.blit(text, (200, 150))
    
def chenggong():
    global x1
    
    screen.fill((0,0,0))
    global x
    global flag
    x=50
    flag=0
    if x1<600:
        font = pygame.font.Font(None, 150)
        text = font.render('Good!', True, (232,0,176), (0, 0, 0))
        screen.blit(text, (200, 150))
    if x1>625:
        font = pygame.font.Font(None, 150)
        text = font.render('Good!', True, (232,0,176), (0, 0, 0))
        screen.blit(text, (200, 150))
    if x1>=600 and x1<=625:
        font = pygame.font.Font(None, 150)
        text = font.render('Perfict!', True, (232,0,176), (0, 0, 0))
        screen.blit(text, (200, 150))
    x1=150    
        
while True:
    clock.tick(100)
    
    # 設定初始值
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        # 影象移動 KEYDOWN 鍵盤按下事件
        # 通過 key 屬性對應按鍵
        cmd=1
        if event.type == pygame.KEYDOWN and flag==1:
            #print("sssss")
            #if event.key == 27:
            #   cmd=2
            if event.key == pygame.K_ESCAPE:
                t1.stop()
                sys.exit()
            if event.key == pygame.K_UP:
                cmd=2
            if event.key == pygame.K_DOWN:
                cmd=4
            if event.key == pygame.K_RIGHT:
                cmd=3
            if event.key == pygame.K_LEFT:
                cmd=1
            if event.key == pygame.K_SPACE:
                cmd=5
                if len(list)==1:
                    del list[0]
                    chenggong() 
                     
                    
                    continue
                
            
            if cmd==list[0]:
                
                if cmd==1:
                    #print(x)
                    img = pygame.image.load("zuo_lv.png")
                    screen.blit(img, [x,500])
                    pygame.display.flip()
                    
                if cmd==2:
                    #print(x)
                    img = pygame.image.load("shang_lv.png")
                    screen.blit(img, [x,500])
                    pygame.display.flip()
                   
                if cmd==3:
                    #print(x)
                    img = pygame.image.load("you_lv.png")
                    screen.blit(img, [x,500])
                    pygame.display.flip()   
                    
                    
                if cmd==4:
                    #print(x)
                    img = pygame.image.load("xia_lv.png")
                    screen.blit(img, [x,500])
                    pygame.display.flip()
 
                x=x+113
                del list[0]
            else:
                print(list1)
                #print("Aaaa")
                fuyuan()
                x=50
                
                
                
                   
           
            #print("sss")
            #screen.fill((0,0,0))
            
           
            
            
    '''
    # 移動影象
    position = position.move(site)
    # 填充背景
    screen.fill(bg)
    # 放置圖片
    screen.blit(img, position)
    # 更新顯示介面
    pygame.display.flip()
    '''

三、效果展示

1)簡潔版炫舞

​2)隨機截圖

3)MISS節拍

以上就是Python+Pygame實戰之炫舞小遊戲的實現的詳細內容,更多關於Python Pygame炫舞遊戲的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com