디시인사이드 갤러리

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

갤러리 본문 영역

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

책사풍후갤로그로 이동합니다. 2024.06.28 09:37:10
조회 38 추천 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 - -
2757502 [입법예고] 학생 자치활동 활성화 (7/7) 우유(218.48) 06.30 38 1
2757500 나는 신이다 [1] 미갤러(175.199) 06.30 63 0
2757494 급똥이 마려울때 화장실 찾기와 똥을지리면 안된다는 [1] 미갤러(175.199) 06.30 40 0
2757492 인간은 급똥이 마려울때 집중력이 최대가 된다 ㅋㅋ [1] 미갤러(175.199) 06.30 37 1
2757490 죽을거면 왜 태어나는거임 어차피 죽을건데 ㅋㅋ [2] 미갤러(175.199) 06.30 52 0
2757483 그럼 정브이 죽겠네 [1] 미갤러(106.101) 06.30 54 0
2757481 결혼 안하고 애 안 낳는 남녀는 죽여야 한다는 소리가 있더라 [1] 미갤러(106.101) 06.30 55 2
2757476 출산율 망... 알리샤갤로그로 이동합니다. 06.30 57 0
2757469 나숭배하면지옥 미갤러(112.186) 06.30 40 0
2757464 어제는 수호신이 있다고 믿어써 미갤러(121.159) 06.30 44 0
2757463 베트남 여자보다 못생겨도 여고생이면 ㅇㅋ 알리샤갤로그로 이동합니다. 06.30 52 0
2757461 우비 입고 왔는데 [3] 미갤러(121.159) 06.30 51 0
2757459 꿀잠자는게 최고의 낙이야 미갤러(121.159) 06.30 45 0
2757456 근데 여고생 낙태 3번이 많냐? [3] 알리샤갤로그로 이동합니다. 06.30 63 0
2757455 순천 집근처에서 병원 야간당직 180 받고 다녔는데 [1] 미갤러(106.101) 06.30 49 0
2757451 무서운 현실? ㅎ [7] 알리샤갤로그로 이동합니다. 06.30 72 1
2757444 ㅅㅂ 고시텔에서 짜파게티 끓여먹었다. [5] 미갤러(106.101) 06.30 69 0
2757442 대미가 없어 대미가 [2] 시라소니갤로그로 이동합니다. 06.30 65 0
2757427 낙태 당한 영혼 찌꺼기 엑기스 환생한 거 윗위층에 산다. 알리샤갤로그로 이동합니다. 06.30 30 0
2757420 아... 아는 여자애가 있었는데 [33] 알리샤갤로그로 이동합니다. 06.30 102 0
2757419 종혁이 죄목에 아마 협박 있을거라 [2] ㅇㅇ(118.235) 06.30 54 2
2757415 종혁이는 아마 월요일쯤이면 연락오겠군 [1] ㅇㅇ(118.235) 06.30 50 2
2757401 주작 현장 썅 ㅋㅋㅋㅋㅋㅋㅋ [1] 시라소니갤로그로 이동합니다. 06.30 72 1
2757400 드디어 왓군요 훠훠 선각자갤로그로 이동합니다. 06.30 136 0
2757399 슈발 걍 내가 탈갤 [3] 미갤러(175.199) 06.30 54 0
2757398 미스터리갤 자칭 정도령 자칭 메시아들 지독한 여미새야 ㅇㅇ(14.35) 06.30 93 5
2757396 고고이 못떠나고 숨어서 뭐하네 ㅋㅋㅋ 시라소니갤로그로 이동합니다. 06.30 56 3
2757392 적이많을수 밖에 없지 자기보다 한참어린 [1] ㅇㅇ(118.235) 06.30 75 1
2757387 정브이는 적이 참 많은 것 같아. [2] 미갤러(106.101) 06.30 72 0
2757385 정브이 욕하지 마라. 정브이 욕하면 음부에 감. 미갤러(106.101) 06.30 42 0
2757380 얼빠 깐족이 뎡브이 샹넘 ㅋㅋㅋ [2] 미갤러(175.199) 06.30 42 0
2757378 뎡브이는 그냥 깐족이라니깐 ㅋㅋㅋㅋㅋ [2] 미갤러(175.199) 06.30 46 0
2757376 글루미 아우님 열등감 대폭발 썅 ㅋㅋㅋㅋㅋ [20] 시라소니갤로그로 이동합니다. 06.30 120 4
2757375 호루스야 지옥이 뭔지 설명해줄께 [1] 미갤러(175.199) 06.30 48 0
2757368 세계대전 터져도 정브이가 "멈춰"하면 그친다 미갤러(106.101) 06.30 39 0
2757365 중국전기차 한국이겨 ㅇㅇ(175.199) 06.30 32 0
2757364 땅울림이.... 시작되었습니노.... ㅇㅇ(223.39) 06.30 83 2
2757363 삼척동자가 출현해서 전쟁을 멈춘다 [1] ㅇㅇ(175.199) 06.30 69 0
2757362 어서 진행하세횻....!!! [1] ㅇㅇ(223.39) 06.30 66 0
2757361 러시아가 하는짓 느낌이.... 포스트 핵전쟁을 준비중인거같음ㅇㅇ [1] ㅇㅇ(223.39) 06.30 75 2
2757360 종혁이나 글놈이나 [3] ㅇㅇ(118.235) 06.30 63 1
2757358 정브이가 잘못아는게 미갤러들이 자기보다 인기가 없는줄암 [1] 글루미갤로그로 이동합니다. 06.30 114 6
2757351 Last Dance [4] 호루스의시대갤로그로 이동합니다. 06.30 605 13
2757349 불켜놓고 넌 어디갓냐 빌린거 줘야는데 ㅇㅇ(118.235) 06.30 35 0
2757348 그 뮤비 호루스와 세트이야기인걸 아는 미갤러가있구나 ㅇㅇ(223.38) 06.30 45 0
2757342 손동균님 전라디언(부:전북/모:충북) 알리샤갤로그로 이동합니다. 06.30 40 0
2757337 아놔 비를 그리많이 머금은 장마전선 구름은 땅에 안떨어지나 미갤러(175.199) 06.30 39 0
2757336 89년생 지청원장 손동균 사제님ㅋㅋ 알리샤갤로그로 이동합니다. 06.30 36 0
2757334 서울 신림동 손동균이가 천주교 꽃동네 신부가 됐는데 알리샤갤로그로 이동합니다. 06.30 54 0
2757333 비오는날 화장을 하면 좋은곳에 간다 [1/1] 대노인(14.55) 06.30 87 2
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2