디시인사이드 갤러리

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

갤러리 본문 영역

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

책사풍후갤로그로 이동합니다. 2024.06.28 09:37:10
조회 51 추천 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/09/30 - -
AD 보험상담은 디시공식설계사에게 받으세요! 운영자 24/08/28 - -
2825510 급여를 달라 미갤러(27.35) 09.28 21 0
2825509 니들은 뭐 매일 어디를 가나 [2] 미갤러(27.35) 09.28 33 0
2825507 도청해서 들었으면 알 거 아녀 지금 내 별칭 미갤러(27.35) 09.28 34 0
2825506 오늘 지나고나면 항상 전쟁을 염두해둬야된다 상제님(1.252) 09.28 32 0
2825505 세갈래 처자냐 ㅇㅇ(118.235) 09.28 37 0
2825504 내 도화살 어느 정돈지 파악했으면 나도 하수인으로 쓰라고 쫌 미갤러(27.35) 09.28 27 0
2825503 쪼다새끼들 미갤러(27.35) 09.28 31 0
2825502 천재들은 뱃속에서부터 기억이 있는데 난 태어났을때 기억있음 상제님(1.252) 09.28 38 0
2825501 애완견도 고려장시킬생각하는데 인간은오죽하겟냐 역시 가해자들은 ㅇㅇ(118.235) 09.28 29 0
2825498 잘못된 호흡은 [2] 트럼프도 신의 아들(121.159) 09.28 52 0
2825495 와서 매출이나 올려줘 등신들아 [1] 미갤러(27.35) 09.28 38 0
2825493 이범죄도 친구 직장동료 친척 이웃 전에 가족부터 조진다 병신아 ㅇㅇ(118.235) 09.28 28 0
2825492 못생긴 새끼들이랑 겸상하고 싶지 않다 미갤러(27.35) 09.28 29 1
2825491 그냥 다 안락사 되라하면 안락사됨 상제님(1.252) 09.28 31 0
2825490 내가 죽는 자들 동물이나 사람들 안락하게 보내준적 많다 상제님(1.252) 09.28 23 0
2825488 못생긴 새기들 그만 들러붙고 여자스토커를 후후 미갤러(27.35) 09.28 32 0
2825487 어흥이사랑꾼 아주 집착 쩌는구만 미갤러(27.35) 09.28 32 1
2825485 반려동물 키우면 담배하지마라 상제님(1.252) 09.28 47 0
2825484 우리나라처럼 그냥 담배 피는거는 장난이지 상제님(1.252) 09.28 43 0
2825482 성스러운 예언 천지개벽 (119.200) 09.28 28 0
2825481 인방에서 외국 클럽은 아약도하고 젝스도 한다더라 상제님(1.252) 09.28 30 0
2825475 니뽄 조센징들 동양인들 첫번째 저주가 삼대가 멸하리라다 이병신아 [1] ㅇㅇ(118.235) 09.28 40 0
2825472 경연프로에 1등당선자들 본인재능같니? 가족보고 뽑는다는걸알면 ㅇㅇ(118.235) 09.28 32 0
2825471 넌 면접이란것도 모르지? 그사람이아닌 그뒤배경 가족을 더우선시한다 ㅇㅇ(118.235) 09.28 34 0
2825469 아직도 이런멍청이가 니주인도 끔찍하게 여기는게 가족이다 병신아 ㅇㅇ(118.235) 09.28 28 0
2825467 하루에 실종자가 몇이고 살인사건은 얼마냐 상제님(1.252) 09.28 40 0
2825466 실종자가 엄청 많나보더라 언론에서 공개를 안한다 상제님(1.252) 09.28 35 1
2825465 아 코찌릉내 존나난다! 아 시발~~ 남묘호랭게쿄(211.44) 09.28 34 0
2825464 단군이 공자라는데 사실인가요? 안녕하세요(175.212) 09.28 45 0
2825462 소패개새끼는 오늘 그알을 볼것이다 조직스토커갤로그로 이동합니다. 09.28 33 0
2825461 인간관계 자체가 여럿이고 그 관계가 불편하니깐 상제님(1.252) 09.28 28 0
2825459 이름이 알려진 외계인은 없어 허구다 상제님(1.252) 09.28 35 0
2825457 질척거리지말고 그만끝내라 ㅇㅇ(118.235) 09.28 43 0
2825454 다들 너무 서로 질척거리는듯 [1] 무능력자(112.184) 09.28 41 0
2825449 가족에게 많은걸 바라지마라 [3] 조직스토커갤로그로 이동합니다. 09.28 64 0
2825448 내가 아는 외계인 종족이 3가지 외계인도 있다 [1] 상제님(1.252) 09.28 34 0
2825447 나는 여럿공격을 받았고 독은 수십번은 먹었을걸 상제님(1.252) 09.28 22 0
2825446 나는 한번씩 변신을 해서 이겨왔다 상제님(1.252) 09.28 27 0
2825444 학교 3군데 그만둔걸 아나? 상제님(1.252) 09.28 29 0
2825443 여자도 나를 한번 갖고 놀고 버릴려는 자도 있었다 상제님(1.252) 09.28 30 0
2825442 학교 다닐 때도 나를 이상하게 봤다 상제님(1.252) 09.28 33 0
2825441 내 고통을 아나? 상제님(1.252) 09.28 25 0
2825440 며칠전 친척이랑 대화도중 소득이없는데 세금을 내는게 상식적으로맞냐고하니 ㅇㅇ(118.235) 09.28 33 0
2825439 나는 직업을 학생말고는 갖어본적도 없고 상제님(1.252) 09.28 30 0
2825437 한놈도 남김없이.... 모조리 포맷하라...!!! ㅇㅇ(223.62) 09.28 39 0
2825434 이제는 상대가 군대고 뭐고 없다 증발시켜주마 나만상제야(1.252) 09.28 28 0
2825433 나는 또 다음생에 술만 쳐 마시는 아버지 밑에 태어나고 ㅋㅋ 래미램브갤로그로 이동합니다. 09.28 35 1
2825432 댓삭하는거보니 이새끼 교대시간이네 ㅇㅇ(118.235) 09.28 37 0
2825430 단하루라도 재미를 못찾으면 죽겟냐 병신아 너말이야너 ㅇㅇ(118.235) 09.28 31 0
2825429 단하루라도 불평불만 안하면 [1] 조직스토커갤로그로 이동합니다. 09.28 40 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2