Bagaimana untuk melaksanakan versi mewah King of Games dalam Python

王林
Lepaskan: 2023-04-27 19:07:04
ke hadapan
1621 orang telah melayarinya

Paparan kesan

Bagaimana untuk melaksanakan versi mewah King of Games dalam Python

Bahan penting

Bagaimana untuk melaksanakan versi mewah King of Games dalam Python

Bagaimana untuk melaksanakan versi mewah King of Games dalam Python

Bagaimana untuk melaksanakan versi mewah King of Games dalam Python

Bagaimana untuk melaksanakan versi mewah King of Games dalam Python

Bagaimana untuk melaksanakan versi mewah King of Games dalam Python

Bagaimana untuk melaksanakan versi mewah King of Games dalam Python

Bagaimana untuk melaksanakan versi mewah King of Games dalam Python

>Bagaimana untuk melaksanakan versi mewah King of Games dalam PythonKod utama

Bagaimana untuk melaksanakan versi mewah King of Games dalam PythonModul import

import pygame
import os.path
import csv
import setting as set
import live
import game_event
import gameui as gi
import startupui as si
Salin selepas log masuk

Fungsi utama program

def run_game():
    #初始化pygame库
    pygame.init()
    #创建时钟对象(控制帧率)
    clock=pygame.time.Clock()
    #实例化设置类,用于导入游戏设置
    setting=set.Setting()
    #设置游戏窗口
    screen=pygame.display.set_mode((setting.screen_width,setting.screen_height))
    pygame.display.set_caption(setting.screen_caption)
Salin selepas log masuk

Tetapkan kumpulan berbeza untuk mengendalikan pelbagai item masing-masing Hubungan

rreee

objek ui segera

#玩家组
group_player=pygame.sprite.Group()
#玩家的攻击组
group_attack=pygame.sprite.Group()
#敌人组
group_enemy=pygame.sprite.Group()
#敌人的攻击组
group_enemy_attack=pygame.sprite.Group()
Salin selepas log masuk

butang antara muka permulaan permainan

    #showinfo用于在游戏内显示人物血条等信息
    showinfo=gi.Info(setting,screen)
    #人物选择按钮
    yi_button=si.MonkeyKingButton(screen,setting)
    monkey_button=si.YiButton(screen,setting)
    fox_button=si.FoxButton(screen,setting)
    bin_button=si.BinButton(screen,setting)
Salin selepas log masuk

latar belakang permainan

    pve_button=si.PVEButton(screen,setting)
    pvp_button=si.PVPButton(screen,setting)
    endless_button=si.EndlessButton(screen,setting)
    control_button=si.ControlButton(screen,setting)
    memory_button=si.RecordButton(screen,setting)
    cooling_button=si.CoolingButton(screen,setting)
Salin selepas log masuk

tanda watak yang dipilih oleh pemain pada masa ini

    select_button=si.SelectButton(screen,setting)
    win_button=si.WinButton(screen,setting)
    dead_button=si.DeadButton(screen,setting)
Salin selepas log masuk

Imej memperkenalkan fungsi butang

    player_button_1=si.PlayerButton1(screen,setting)
    player_button_2=si.PlayerButton2(screen,setting)
    #空白按钮
    none_button=si.NoneButton(screen,setting)
    #空白图像
    none_info=gi.ExInfo(screen,none_button,setting.introduce_none)
Salin selepas log masuk

Kumpulan butang (semasa melukis, butang sebelumnya akan dilindungi oleh butang berikut)

    pve_info=gi.ExInfo(screen,pve_button,setting.introduce_pve)
    pvp_info=gi.ExInfo(screen,pvp_button,setting.introduce_pvp)
    endless_info=gi.ExInfo(screen,endless_button,setting.introduce_endless)
    control_info=gi.ExInfo(screen,control_button,setting.introduce_control)
    record_info=gi.ExInfo(screen,memory_button,setting.introduce_record)
    cooling_info=gi.ExInfo(screen,cooling_button,setting.introduce_cooling)
Salin selepas log masuk

Kumpulan butang label

    buttons=[select_button,yi_button,monkey_button,fox_button,bin_button,
             pve_button,pvp_button,endless_button,
             cooling_button,control_button,memory_button,
             dead_button,win_button]
Salin selepas log masuk

Kumpulan imej memperkenalkan fungsi butang

    choose_buttons=[player_button_1,player_button_2]
Salin selepas log masuk

Gelung utama permainan

    button_info_dict={none_button:none_info,pve_button:pve_info,pvp_button:pvp_info,
                      endless_button:endless_info,control_button:control_info,
                      memory_button:record_info,cooling_button:cooling_info}
    #当前显示的图像列表
    info_label=[]
    #存储模拟刚体运动的列表
    rigidbody_list=[]
    #玩家实例,初始化为战士
    player_1=live.MonkeyKing(setting,screen)
    player_2=live.MonkeyKing(setting,screen)

    if not os.path.exists(setting.record_path):
        #如果游戏记录文件不存在就新创建一个
        with open(setting.record_path,'w',newline="") as f:
            writer=csv.writer(f)
            header=["Time","Mode","Winner","1st Score","2st Score","Duration(s)","1st Player","2nd Player","isCooling"]
            writer.writerow(header)
Salin selepas log masuk

Kemas kini label watak yang dipilih semasa

    while True: 
        #绘制背景
        screen.blit(setting.screen_surface_background,(0,0))
        #设置游戏帧率
        clock.tick(setting.fps)
        #检测键盘鼠标事件   
        game_event.check_event(setting,screen,group_player,group_attack,group_enemy,
                               group_enemy_attack,buttons,showinfo,button_info_dict,info_label)
Salin selepas log masuk

Permainan berjalan, mod konfrontasi bukan pemain

rreee

Permulaan aksara

        game_event.update_choose(setting,buttons,choose_buttons)
Salin selepas log masuk

Kemas kini musuh, serangan pemain, serangan musuh, status pemain, dll.

        if (setting.game_active and (setting.game_mode==0 or setting.game_mode==2)):
Salin selepas log masuk

Syarat kemenangan

            if(not setting.isinit):
                if setting.player_1!=None:
                    player_1=setting.player_1
                    group_player.add(player_1)
                if setting.player_2!=None:
                    player_2=setting.player_2
                    group_player.add(player_2)                
                setting.isinit=True
            #游戏计时器
            setting.timer+=1
            #更新玩家
            group_player.update()
            #生成敌人
            game_event.generate_enemies(setting,group_enemy,screen)
Salin selepas log masuk

Syarat kegagalan

game_event.update_enemies(setting,showinfo,screen,group_player,group_enemy,group_attack,group_enemy_attack)
            game_event.update_attacks(setting,screen,group_attack,group_enemy,rigidbody_list)
            game_event.update_enemy_attacks(setting,screen,group_player,group_enemy_attack,rigidbody_list)
            game_event.update_state(setting,showinfo)
            game_event.update_rigidbody(setting,rigidbody_list)
Salin selepas log masuk

Musuh Pemain mod

            if setting.timer>=60*setting.fps and not group_enemy.spritedict and setting.game_mode==0:
                game_event.game_win(setting,showinfo,group_enemy,group_attack,group_enemy_attack)
                setting.timer=0
Salin selepas log masuk

Permulaan aksara

            if setting.isinit and ((setting.player_1!=None and setting.health_1<=0) or (setting.player_2!=None and setting.health_2<=0)):              
                game_event.game_dead(setting,showinfo,group_enemy,group_attack,group_enemy_attack)
                setting.timer=0
Salin selepas log masuk

Pemasa permainan

        elif setting.game_active and setting.game_mode==1:
Salin selepas log masuk

Kemas kini pemain

            if(not setting.isinit):
                if setting.player_1!=None and setting.player_2!=None:
                    player_1=setting.player_1
                    group_player.add(player_1)
                    player_2=setting.player_2
                    group_player.add(player_2)                        
                    setting.isinit=True
Salin selepas log masuk

Kemas kini serangan pemain, paparan maklumat dan simulasi fizik

setting.timer+=1
Salin selepas log masuk

            player_1.update()
            player_2.update()
Salin selepas log masuk

>Syarat kemenangan pemain 1

game_event.update_attacks_pvp(setting,screen,group_attack,rigidbody_list)
            game_event.update_state(setting,showinfo)
            game_event.update_rigidbody(setting,rigidbody_list)
Salin selepas log masuk

Syarat kemenangan pemain 2

            if setting.isinit and setting.health_2<=0:
                setting.score_1+=1
                game_event.game_win(setting,showinfo,group_enemy,group_attack,group_enemy_attack)
                setting.timer=0
Salin selepas log masuk

Lukis keseluruhan tetingkap permainan berdasarkan keputusan yang dikemas kini di atas

            if setting.isinit and setting.health_1<=0:
                setting.score_2+=1
                game_event.game_win(setting,showinfo,group_enemy,group_attack,group_enemy_attack)
                setting.timer=0
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan versi mewah King of Games dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan