디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

간단한 요시츠네 vs타이라 백잔왜노 전투 게임 소스코드앱에서 작성

책사풍후갤로그로 이동합니다. 2024.06.28 09:37:10
조회 26 추천 0 댓글 0
														

간단한 요시츠네 vs타이라 백잔왜노 전투 게임 소스코드

1ebec223e0dc2bae61abe9e74683706d2ca344f1d3dfcbbbb6c7e5750915919955defb7d4252e6ef9e56bde9

1ebec223e0dc2bae61abe9e74683706d2ca344f1d3dec9b6b2c9e575091591999e90061de4402078b2e0fbe7

1ebec223e0dc2bae61abe9e74683706d2ca344f1d3dec9b7b5c5e5740915919923200233552d4870df3c7e

1ebec223e0dc2bae61abe9e74683706d2ca344f1d3dec9b7b5c5e5750915919993844cc8b716a2c28ccdccca

7aec8377b7ed3aa76db4c8e758db343a1724384f37affd999035

7d82836eb28071e864afd3b236ef203ed3c32f311c974240

7d82816eb38771e864afd3b236ef203e41736900b12b90b9

a14b0cac30066ae864afd19528d52703535165be0bee

0490f719b48a6df720b5c6b236ef203e7a5bb13deb74db56

2ebcd521f6d328b360b8dea029d01b30615cd7d1d143d9c8b7288f1fc7a321772a0de1b9a087aadfd8109aeb72e91aff93dad6b4e93f4e67ab8452378f788c0406daca53b0ccd6e732533fc85fa4fbc48bb0ba47865c50f2ee5cece433a17f5e93a8b7e1895ac2629b9cb34f28f5611c499b5888db

7d82826eb18a71e864afd3b236ef203e0d7a92ebef3d9455

7d82836eb08271e864afd3b236ef203e662535a96bdd16ca

물론이죠! 올려주신 C 소스 코드를 Unity C# 스타일로 변환해 드릴게요. 아래는 변환된 코드입니다:

```csharp
using UnityEngine;

public class BattleSystem : MonoBehaviour
{
    // 캐릭터 정보
    public class CharacterInfo
    {
        public string name;   // 이름
        public int level;     // 레벨
        public int hp;        // 체력
        public int mp;        // 마법력
        public int attack;    // 공격력
        public int defense;   // 방어력
        public ItemType items; // 아이템
    }

    // 아이템 종류
    [System.Flags]
    public enum ItemType
    {
        None = 0,
        Weapon = 1,
        Armor = 2,
        Accessory1 = 4,
        Accessory2 = 8
    }

    // 턴 종류
    public enum Turn
    {
        Player,
        Enemy
    }

    private CharacterInfo player;
    private CharacterInfo enemy;
    private Turn currentTurn;

    void Start()
    {
        // 랜덤 시드 설정
        Random.InitState(System.DateTime.Now.Millisecond);

        player = new CharacterInfo
        {
            name = "Player",
            level = 1,
            hp = 100,
            mp = 20,
            attack = 10,
            defense = 7,
            items = ItemType.Weapon | ItemType.Armor | ItemType.Accessory1 | ItemType.Accessory2
        };

        enemy = new CharacterInfo();
        ResetEnemyInfo(enemy);

        currentTurn = Turn.Player;
    }

    void Update()
    {
        if (currentTurn == Turn.Player)
        {
            PlayerTurnProcess();
            currentTurn = Turn.Enemy;
        }
        else if (currentTurn == Turn.Enemy)
        {
            EnemyTurnProcess();
            currentTurn = Turn.Player;
        }
    }

    void ClearScreen()
    {
        // Unity에서는 콘솔을 직접 지울 수 없지만, 디버그 로그를 사용할 수 있습니다.
        Debug.ClearDeveloperConsole();
    }

    void PrintCharInfo(CharacterInfo info)
    {
        if (info == null) return;

        Debug.Log($">>> {info.name} <<<");
        Debug.Log($"* Lv : {info.level}");
        Debug.Log($"* HP : {info.hp}");
        Debug.Log($"* MP : {info.mp}");
        Debug.Log($"* ATK : {info.attack}");
        Debug.Log($"* DEF : {info.defense}");

        PrintItem(info.items);
    }

    void ResetEnemyInfo(CharacterInfo info)
    {
        if (info == null) return;

        string[] enemyNames = { "Mario", "Ryu", "Luigi", "Sonic", "King-Kong" };
        info.name = enemyNames[Random.Range(0, enemyNames.Length)];
        info.level = Random.Range(1, 100);
        info.hp = info.level + Random.Range(0, 100) + 10;
        info.mp = info.level + Random.Range(0, 10) + 2;
        info.attack = (info.level * 2) + Random.Range(0, 30);
        info.defense = (info.level * 2) + Random.Range(0, 30);
        info.items = SetupEquipWithPercent(30);
    }

    void PrintPlayerControlInfo()
    {
        Debug.Log("-*- Select Action -*-");
        Debug.Log("1.Attack 2.Defense 3.Magic 4.Run");
    }

    int InputProcess()
    {
        // Unity에서는 키보드 입력을 처리하는 방법이 다릅니다.
        // Input.GetKeyDown을 사용하는 방법 중 하나를 예시로 들었습니다.
        if (Input.GetKeyDown(KeyCode.Alpha1)) return 1;
        if (Input.GetKeyDown(KeyCode.Alpha2)) return 2;
        if (Input.GetKeyDown(KeyCode.Alpha3)) return 3;
        if (Input.GetKeyDown(KeyCode.Alpha4)) return 4;
        return 0;
    }

    void InputAttackProcess(CharacterInfo actor, CharacterInfo target)
    {
        Debug.Log("Input Attack Process Call!");

        target.hp -= actor.attack * 2;
        if (target.hp < 0)
        {
            target.hp = 0;
        }
    }

    void InputDefenseProcess()
    {
        Debug.Log("Input Defense Process Call!");
    }

    void InputMagicProcess()
    {
        Debug.Log("Input Magic Process Call!");
    }

    void InputRunProcess()
    {
        Debug.Log("Input Run Process Call!");
    }

    void InputMainProcess(int input, CharacterInfo player, CharacterInfo enemy)
    {
        switch (input)
        {
            case 1:
                InputAttackProcess(player, enemy);
                if (enemy.hp <= 0) ResetEnemyInfo(enemy);
                break;
            case 2:
                InputDefenseProcess();
                break;
            case 3:
                InputMagicProcess();
                break;
            case 4:
                InputRunProcess();
                break;
        }
    }

    void Waiting()
    {
        // Unity에서는 Console 입력을 기다리지 않습니다.
        // 대신 Update 루프에서 매 프레임을 처리합니다.
    }

    ItemType SetupEquipWithPercent(int percent)
    {
        percent -= 1;
        ItemType item = ItemType.None;
        if (Random.Range(0, 100) < percent) item |= ItemType.Weapon;
        if (Random.Range(0, 100) < percent) item |= ItemType.Armor;
        if (Random.Range(0, 100) < percent) item |= ItemType.Accessory1;
        if (Random.Range(0, 100) < percent) item |= ItemType.Accessory2;
        return item;
    }

    void PrintItem(ItemType items)
    {
        Debug.Log("**== Inventory ==**");
        if (items == ItemType.None) Debug.Log("-- Empty --");
        if ((items & ItemType.Weapon) != 0) Debug.Log("/ Weapon");
        if ((items & ItemType.Armor) != 0) Debug.Log("/ Armor");
        if ((items & ItemType.Accessory1) != 0) Debug.Log("/ Accessory1");
        if ((items & ItemType.Accessory2) != 0) Debug.Log("/ Accessory2");
        Debug.Log("**===============**");
    }

    void PlayerTurnProcess()
    {
        Debug.Log("\n+|+|+| Player Turn |+|+|+\n");

        PrintPlayerControlInfo();

        int input = InputProcess();
        InputMainProcess(input, player, enemy);
    }

    void EnemyTurnProcess()
    {
        Debug.Log("\n+|+|+| Enemy Turn |+|+|+\n");

        EnemyAI();
    }

    void EnemyAI()
    {
        int action = Random.Range(1, 7);

        switch (action)
        {
            case 1:
                Debug.Log("~ Enemy Attack!!");
                InputAttackProcess(enemy, player);
                if (player.hp <= 0) Debug.Log(".....You Died!.....");
                break;
            case 2:
                Debug.Log("~ Enemy Defense!!");
                InputDefenseProcess();
                break;
            case 3:
                Debug.Log("~ Enemy Magic!!");
                InputMagicProcess();
                break;
            case 4:
                Debug.Log("~ Enemy Run!!");
                ResetEnemyInfo(enemy);
                break;
            default:
                Debug.Log("~ Enemy Idle..");
                break;
        }
    }
}
```

이 코드는 Unity에서 사용할 수 있도록 최적화되었습니다. `MonoBehaviour`를 상속받는 `BattleSystem` 클래스는 Unity의 컴포넌트 시스템에 맞게 설계되었으며, `Update` 메서드를 사용하여 매 프레임마다 게임 로직을 처리합니다. 키보드 입력은 `Input.GetKeyDown` 메서드를 사용하여 처리하고, `Debug.Log`를 사용하여 콘솔 출력을 제공합니다. `Start` 메서드는 게임 시작 시 한 번 실행되며, 캐릭터와 적의 초기화를 처리합니다.

- dc official App

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 외모와 달리 술 일절 못 마셔 가장 의외인 스타는? 운영자 24/07/01 - -
AD 보험상담은 디시공식설계사에게 받으세요! 운영자 24/02/28 - -
2757669 꺼져! 미갤러(118.235) 06.30 24 0
2757667 굥 탄핵조건은 이정도는 되야한다 [1] Gブリ갤로그로 이동합니다. 06.30 64 0
2757665 스토킹그만한다는 확증. 증표를.주세요. 미갤러(118.235) 06.30 22 0
2757664 할말없고 화는나고 미갤러(118.235) 06.30 22 0
2757661 어째서 타자로 드둘기면 미갤러(118.235) 06.30 17 0
2757657 한국인은 이러나 저러나 머라함 [3] 미갤러(175.199) 06.30 49 2
2757655 회난다. 화난다. [4] 미갤러(118.235) 06.30 39 0
2757652 공구리 아이디 바꿨냐? [3] Hospitaller갤로그로 이동합니다. 06.30 36 0
2757651 웅정이 보면서 미갤러(118.235) 06.30 25 0
2757647 윤석열 탄핵 백만 가즈아 [3] 얼라이엇갤로그로 이동합니다. 06.30 51 0
2757645 스기힘들다. 미갤러(118.235) 06.30 22 0
2757643 율법이 곧 정신이고, 물질계를 지탱하는 기둥이다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 칠칠이(39.7) 06.30 23 1
2757642 굥 탄핵 청원 70만 돌파, 여러분의 생각은? [1] Gブリ갤로그로 이동합니다. 06.30 46 1
2757640 20억! 쿨하게 달라고! 얼라이엇갤로그로 이동합니다. 06.30 15 0
2757639 예수믿는 종교는 사이비종교인거 인정해라 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ [1] 칠칠이(39.7) 06.30 28 1
2757638 그래서 고래회충 기생충 맛나냐고. 미갤러(118.235) 06.30 20 0
2757637 돈이나 내놓으라고! 얼라이엇갤로그로 이동합니다. 06.30 19 1
2757635 회 에서 고래회충. 미갤러(118.235) 06.30 20 0
2757632 쓸말도없다 [1] 미갤러(118.235) 06.30 26 0
2757630 생김새가 비슷하다고 환생? [5] Hospitaller갤로그로 이동합니다. 06.30 40 0
2757629 정브이가 멘탈이 강한 것 같군 [1] 제천대성(106.101) 06.30 31 0
2757615 ☆★☆★☆렙틸리언 갤러리로 놀러오세요 :)☆★☆★☆ EA갤로그로 이동합니다. 06.30 41 1
2757613 누가될까요 [1] 미갤러(223.39) 06.30 37 0
2757611 1.6L 카스 피처 마신다 [1] 제천대성(106.101) 06.30 34 0
2757610 피닉스저널 / 대중에게 감추어진 역사 미갤러(121.88) 06.30 26 0
2757609 미 항모 시대 종지부/ 레바논 침공은 자기 파멸/ 오만은 필히 네메시스를 미갤러(121.88) 06.30 26 0
2757608 돈 줘! 입금시켜! 얼라이엇갤로그로 이동합니다. 06.30 32 1
2757605 [1] 미갤러(223.39) 06.30 36 0
2757604 렙틸리언 갤러리 개설 완료 EA갤로그로 이동합니다. 06.30 43 0
2757603 아아아아!!!!!!!!!! [1] 얼라이엇갤로그로 이동합니다. 06.30 25 0
2757599 한국의 상황 해석_과거 [8] 알리샤갤로그로 이동합니다. 06.30 75 1
2757597 중국은 무서운 나라 알리샤갤로그로 이동합니다. 06.30 56 2
2757596 이말만 하고 집착을버려야지 [1] 미갤러(175.199) 06.30 44 1
2757595 나는 렙틸리언의 환상심기 신비주의에 당한것인가 미갤러(175.199) 06.30 32 0
2757592 외람되지만 알리샤님같은 얼굴셰잎이 렙틸리언임 오이 [2] 미갤러(175.199) 06.30 67 0
2757590 단순반복적인 강박일정도로 똑같은거만 계속하면 미갤러(175.199) 06.30 32 0
2757589 대노인의 시대는 갔고 알리샤님의 시대 왔디 팔리온(211.234) 06.30 39 0
2757588 지구를 위해 인간이 줄어야하니 ai와 잭스돌로 인구증가 막자 알리샤갤로그로 이동합니다. 06.30 35 1
2757587 예수님+고양이 알고리즘 =끝남. ㅅㄱ 알리샤갤로그로 이동합니다. 06.30 40 0
2757581 대노인은 알리샤님이 미스터리 갤러리를 잘 다스릴것이라 말하심 [2] 팔리온(211.234) 06.30 64 0
2757579 말세가 도래했다 알리샤갤로그로 이동합니다. 06.30 61 0
2757577 환생 설명 [4] 알리샤갤로그로 이동합니다. 06.30 62 0
2757575 이건비밀인데 깨달음은 말로써설명되지 않는것이다 [3] 미갤러(175.199) 06.30 61 0
2757570 저게 맞냐 ㅇㄹ ㅁㅓ스크ㅡㅡ? [2] 알리샤갤로그로 이동합니다. 06.30 75 0
2757567 물고기가.... 물병에서 나오는..... 훠.... [1] ㅇㅇ(223.39) 06.30 137 7
2757565 이제는 안녕..... ㅇㅇ(223.39) 06.30 101 6
2757564 도움이 필요합니다 (전파무기 피해자입니다) [5] 미갤러(110.12) 06.30 62 1
2757562 에너지드링크 캔디 우물거리면 지혜가 번쩍인다 책사풍후갤로그로 이동합니다. 06.30 39 1
2757558 내 정신이...와해됐다.. 칠칠이(39.7) 06.30 58 1
2757557 맞추세요 미갤러(223.39) 06.30 36 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2