디시인사이드 갤러리

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

갤러리 본문 영역

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

책사풍후갤로그로 이동합니다. 2024.06.28 09:37:10
조회 42 추천 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 - -
2757289 방아깨비 동사성 미갤러(121.159) 06.30 54 0
2757288 이거 맛있게따 미갤러(121.159) 06.30 57 0
2757284 "미국정치 갤러리"의 심각한 의문점 문제점 (feat.꼴통) 33dy갤로그로 이동합니다. 06.30 131 1
2757282 바보들이 바보짓을 하는 이유 [2] 미갤러(121.159) 06.30 80 0
2757280 나는 출근한지 오래다 미갤러(121.159) 06.30 48 0
2757279 1인칭 주인공 시점으로 세상을 바라보면 미갤러(121.159) 06.30 60 0
2757277 우비샀다 [2] 미갤러(121.159) 06.30 66 0
2757275 맨날 싸우고 야한 소리가 일상 Hospitaller갤로그로 이동합니다. 06.30 77 0
2757274 이세상이 아직 멸밍하지 않는 이유 33dy갤로그로 이동합니다. 06.30 80 1
2757273 니들 여물어 할땐 귀엽더라 Hospitaller갤로그로 이동합니다. 06.30 52 0
2757271 아 맞다 짤임ㅇㅇ [9] 알리샤갤로그로 이동합니다. 06.30 87 0
2757270 엡스타인 모사드? [1] 미갤러(121.88) 06.30 61 0
2757269 777 일부 [2] 알리샤갤로그로 이동합니다. 06.30 73 0
2757264 검사out 검사정부out 국힘해체 기원 35 얼라이엇갤로그로 이동합니다. 06.30 29 0
2757260 14.42 한달 차단 ㅇㅇ(211.235) 06.30 47 0
2757253 2011년 동일본 지진급 와야된다....시키는데로 해라 얼라이엇갤로그로 이동합니다. 06.30 52 1
2757251 야!!!! 하프 돌리라고!!!! 지진 일으켜!!! 얼라이엇갤로그로 이동합니다. 06.30 39 0
2757246 지들이 죽어도 특별법 특검 소리 안 하나보자 얼라이엇갤로그로 이동합니다. 06.30 42 0
2757245 대구경북에 진도9.2짜리 지진 일으켜라 하프 돌려 [1] 얼라이엇갤로그로 이동합니다. 06.30 42 0
2757242 윤석열 니가 이때까지 잘한게 뭐가 있냐!! 얼라이엇갤로그로 이동합니다. 06.30 45 0
2757240 피닉스저널 대중에게 감추어진 역사 미갤러(121.88) 06.30 43 0
2757232 윤석열 니 하야하라고! 얼라이엇갤로그로 이동합니다. 06.30 46 0
2757230 오늘도 미갤은 고약했다 ㅇㅇ(175.199) 06.30 52 0
2757229 언제 어느시대에 나의 이야기가 인증될까 ㅇㅇ(175.199) 06.30 56 0
2757228 또 생각한거 누군가 밑에 글을 썼구나 ㅇㅇ(175.199) 06.30 54 0
2757227 모기가 조낸 문다 ㅇㅇ(175.199) 06.30 66 0
2757222 고양이의 반응속도를 능가하는 이것!!! Gブリ갤로그로 이동합니다. 06.30 71 0
2757218 하나님 군대 잇어? ㅇㅇ(104.28) 06.30 56 0
2757216 속보 대전 갑천 범람 [1] Gブリ갤로그로 이동합니다. 06.30 147 0
2757215 만약 당신이 똑똑하고 성실해도 인정받지 못한다면 미갤러(117.111) 06.30 105 7
2757214 미갤러가 키운 소가 되새김질 하며 하는 말 ㅇㅇ(118.235) 06.30 69 2
2757213 가세요 미갤러(223.39) 06.30 67 0
2757212 정브이는 죽어서 여자 거기에 가게 된다 제천대성(106.101) 06.30 60 2
2757211 지리산에 반달곰을 푼 행위는 ㅇㅇ(118.235) 06.30 81 1
2757209 성경 지옥 변개? [2] 호루스의시대갤로그로 이동합니다. 06.30 103 0
2757206 나도 의원나리 소리 좀 들어보자 임마 [2] 얼라이엇갤로그로 이동합니다. 06.30 69 0
2757204 사람은 자기 분수를 지켜야 한다 [6] ㅇㅇ(118.235) 06.30 123 2
2757200 더워주세요 미갤러(223.39) 06.29 66 1
2757198 벌써 미국대선이 곧 이네 YAH갤로그로 이동합니다. 06.29 72 0
2757195 작년에 소방관이 나보고 하는말이 당신이 일루미나티녜 [1] illuminati갤로그로 이동합니다. 06.29 102 1
2757191 도와주세요 [1] 안티가문아들(114.204) 06.29 80 1
2757184 쏘니오빵의 항문을 활짝 열어제껴 ♡ 히히 [4] 예수쟁취(58.77) 06.29 84 1
2757181 <윤시내가 사라졌다> emp(211.117) 06.29 103 1
2757176 발고락이 아푸다 [3] 미갤러(121.159) 06.29 69 0
2757172 고양이과 최강자 Hospitaller갤로그로 이동합니다. 06.29 61 0
2757170 4달 남은 미 대선을 위한 북한의 도발은 기승전결의 시나리오를 따를겁니노 [2] ㅇㅇ(223.39) 06.29 181 9
2757166 좋았쓰! 미갤러(124.55) 06.29 57 0
2757164 점마 저거 쬮팔린짓해서 저러는거노? ㅇㅇ(104.28) 06.29 51 0
2757163 한국 일루미나티가 실패한 시나리오 마지막 복구기회입니노.... [1] ㅇㅇ(223.39) 06.29 165 5
2757162 ㅋㅋ Hospitaller갤로그로 이동합니다. 06.29 47 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2