Heim > Backend-Entwicklung > Python-Tutorial > So implementieren Sie eine High-End-Version von King of Games in Python

So implementieren Sie eine High-End-Version von King of Games in Python

王林
Freigeben: 2023-04-27 19:07:04
nach vorne
1668 Leute haben es durchsucht

Effektanzeige

So implementieren Sie eine High-End-Version von King of Games in Python

Wesentliche Materialien

So implementieren Sie eine High-End-Version von King of Games in Python

So implementieren Sie eine High-End-Version von King of Games in Python

So implementieren Sie eine High-End-Version von King of Games in Python

So implementieren Sie eine High-End-Version von King of Games in Python

So implementieren Sie eine High-End-Version von King of Games in Python

So implementieren Sie eine High-End-Version von King of Games in Python

So implementieren Sie eine High-End-Version von King of Games in Python

So implementieren Sie eine High-End-Version von King of Games in Python

So implementieren Sie eine High-End-Version von King of Games in Python

Hauptcode

Modul importieren

import pygame
import os.path
import csv
import setting as set
import live
import game_event
import gameui as gi
import startupui as si
Nach dem Login kopieren

Programm The Die Hauptfunktion

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)
Nach dem Login kopieren

richtet verschiedene Gruppen ein, um die Beziehungen zwischen verschiedenen Elementen zu verwalten.

#玩家组
group_player=pygame.sprite.Group()
#玩家的攻击组
group_attack=pygame.sprite.Group()
#敌人组
group_enemy=pygame.sprite.Group()
#敌人的攻击组
group_enemy_attack=pygame.sprite.Group()
Nach dem Login kopieren

UI-Objekte zu instanziieren Vorstellung des Bildes der Schaltflächenfunktion

    #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)
Nach dem Login kopieren

Schaltflächengruppe (beim Zeichnen wird die vorherige Schaltfläche durch die folgende Schaltfläche abgedeckt)

    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)
Nach dem Login kopieren

Beschriftungsschaltflächengruppe

    select_button=si.SelectButton(screen,setting)
    win_button=si.WinButton(screen,setting)
    dead_button=si.DeadButton(screen,setting)
Nach dem Login kopieren

Einführung der Bildgruppe der Schaltflächenfunktion

    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)
Nach dem Login kopieren

Spielhauptschleife

    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)
Nach dem Login kopieren

Aktualisieren Sie die Beschriftung des aktuell ausgewählten Charakters.

    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]
Nach dem Login kopieren
.

Spiel läuft, Nicht-Spieler-Konfrontationsmodus.

    choose_buttons=[player_button_1,player_button_2]
Nach dem Login kopieren
Fehlerbedingungen

    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)
Nach dem Login kopieren

Spieler-gegen-Spieler-Modus

    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)
Nach dem Login kopieren

Charakterinitialisierung

        game_event.update_choose(setting,buttons,choose_buttons)
Nach dem Login kopieren

Spieltimer

        if (setting.game_active and (setting.game_mode==0 or setting.game_mode==2)):
Nach dem Login kopieren

Spieler aktualisieren

            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)
Nach dem Login kopieren

Angriff, Informationsanzeige und Physiksimulation des Spielers aktualisieren

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)
Nach dem Login kopieren

Sieg von Spieler 1. Bedingung

            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
Nach dem Login kopieren

Siegbedingung für Spieler 2

            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
Nach dem Login kopieren

Zeichnen Sie das gesamte Spielfenster basierend auf den Ergebnissen des obigen Updates

        elif setting.game_active and setting.game_mode==1:
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine High-End-Version von King of Games in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage