디시인사이드 갤러리

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

갤러리 본문 영역

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

책사풍후갤로그로 이동합니다. 2024.06.28 09:36:39
조회 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
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 본업은 완벽해 보이지만 일상은 허당일 것 같은 스타는? 운영자 25/02/17 - -
공지 만화 갤러리 이용 안내 [625] 운영자 24.02.05 142063 56
6284644 똥 존나 마려운데 참는 중 ㅇㅇ(49.1) 07:38 2 0
6284643 케이온이 인생작<~어떤 사람같음? 10000V갤로그로 이동합니다. 07:38 7 0
6284642 엠생백수한텐 나라 망하나 안 망하나 똑같음ㅋㅋㅋ [1] ㅇㅇ(106.102) 07:38 17 0
6284641 핀과 제이크 <-이거 재밌나요 [9] 계량경제학갤로그로 이동합니다. 07:37 19 0
6284640 찐특)인싸픽 찐따픽 이런거 신경씀 람머스갤로그로 이동합니다. 07:37 17 0
6284639 아 정신에 혼란이옴 [2] 닥터그러타갤로그로 이동합니다. 07:37 15 0
6284638 아니근데 살면서 착하고 소심한 ab형들은 만나본적이없슴 ㅇㅇ(118.235) 07:37 6 0
6284636 저출산 0.7 알빠노 어차피 안망하잖아 [1] 2단모게코갤로그로 이동합니다. 07:36 28 0
6284635 메이플은 아직도 레지스탕스 병신취급임? [2] 포말하우트A갤로그로 이동합니다. 07:36 22 0
6284634 ab형이 착하고 소심하면 경계해라 [4] ㅇㅇ(118.235) 07:36 25 0
6284633 사이트좀찾아주실분 ㅇㅇ(58.122) 07:36 10 0
6284632 공부의 폐해...jpg [3] ㅇㅇ(210.178) 07:35 77 2
6284631 난재산이 1조여도 만갤맨날함 ㄹㅇ [1] ㅇㅇ(106.102) 07:35 26 0
6284630 봇치가 인싸픽이라는 건 케이온이 인싸픽이라는 급 헛소리임 [3] Anti-DEATH갤로그로 이동합니다. 07:35 38 0
6284629 심심하면 중갤 ㄱ ㅇㅇ(49.168) 07:35 22 1
6284627 나이먹고도여친이없는남자 < 얘네는 미성숙해 ㄹㅇ [4] ㅇㅇ(106.102) 07:34 51 0
6284626 밥 갤러리에 음식 사진 올려주세요 ㅇㅇ(183.91) 07:34 13 0
6284625 이런게 알고리즘에 왜 뜨는거임 [2] 샤르티아갤로그로 이동합니다. 07:34 34 0
6284624 몇시에 잘까 [4] 만갤러.갤로그로 이동합니다. 07:34 18 0
6284623 난 나이 70먹을때까지 일본 애니노래 들을거같긴해 [3] ㅇㅇ(211.63) 07:34 31 0
6284622 빙제가 젖보똥 애들 못이김 [1] ㅇㅇ(118.46) 07:34 37 0
6284621 아 속 개쓰리네.. [8] [ずんだもん]갤로그로 이동합니다. 07:34 38 0
6284620 제발 애니 하나만 찾아주라 진짜 제발 [2] 만갤러(211.217) 07:33 34 0
6284619 여장치마를 가져와라… ㅁㅁ갤로그로 이동합니다. 07:33 26 0
6284618 늙어서도 오타쿠 씹덕애니송 듣는새끼 < 루저임? ㅇㅇ(106.102) 07:33 23 0
6284616 이게 메이플 직업 티어표임...jpg [8] ㅇㅇ(116.121) 07:33 100 0
6284615 출근충 괴사마렵놐ㅋㅋ 아우토반갤로그로 이동합니다. 07:32 20 0
6284614 난진짜 씹덕아닌듯 [5] ㅇㅇ갤로그로 이동합니다. 07:32 50 0
6284613 버튜버들 촌스러운 이름 짓는 이유머지 [1] 라그네파갤로그로 이동합니다. 07:32 41 0
6284612 이대남만큼 역대급으로 쓸모없는 세대가 또 있을까 [5] ㅇㅇ(211.234) 07:32 49 0
6284611 무스부양 완결났냐? [6] 만갤러(211.208) 07:32 51 0
6284610 특이점 와서 미소녀ts한다 해도 [1] ㅇㅇ(211.234) 07:31 23 0
6284609 만삐 105파 피잉 ㅇㅇ(106.102) 07:31 19 0
6284608 맥주 6캔 마셨더니 ㄹㅇ 너무 기모찌함 [6] ㅇㅇ갤로그로 이동합니다. 07:31 48 1
6284606 유명인되면 좋은게 유명한여자랑 떡칠수있다 말고머있서 [2] ㅇㅇ(106.102) 07:30 40 0
6284605 아침일찍 씻으니까 젛음 [5] Serurian갤로그로 이동합니다. 07:30 38 0
6284604 번역추) 오펜하이머@@#@ 무₩&/료 보@*!기 가입 없#?!@음 번역추갤로그로 이동합니다. 07:30 32 0
6284603 여자친구가 인싸면 불편할듯... [9] 걷는버섯갤로그로 이동합니다. 07:30 64 1
6284602 클래식 듣는 아줌마들 < 얘네는 클래식을 듣는나에 취한듯 [7] ㅇㅇ(106.102) 07:30 38 0
6284601 악의교전 신간 표지 좀 별로네.....jpg [11] 포말하우트A갤로그로 이동합니다. 07:29 98 0
6284600 님들 아내가 갑자기 자기 사실 남자라고 고백하면 어떡함? [6] ㅇㅇ(118.235) 07:29 38 0
6284599 요즘 고민이 있음 [11] 라트니크갤로그로 이동합니다. 07:29 65 1
6284598 과고가 진짜 천재들만 있는 곳임??? [12] 샤르티아갤로그로 이동합니다. 07:29 65 0
6284596 달러 1470일때 일비 결제받아서 미국출장 ㄱㅇㄷ ㅇㅇ갤로그로 이동합니다. 07:29 26 0
6284595 여주가 갑자기 울면 싸대기 마려움.... 유니짱스갤로그로 이동합니다. 07:29 25 0
6284594 나라 진짜 망한거 맞음? [10] 빈유좋아갤로그로 이동합니다. 07:29 76 0
6284593 오늘은 기필코 피자 시킨다 ㅇㅇ(221.146) 07:28 19 0
6284592 퇴근하는중 [7] 만갤러.갤로그로 이동합니다. 07:28 36 0
6284591 느끼한 연출은 별로임 [4] 금타갤로그로 이동합니다. 07:28 47 0
뉴스 진지희, 연극 '시련' 합류 마녀재판의 중심 메어리 워렌으로 변신 디시트렌드 02.18
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2