회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인PC가 아닐 경우 타인이 로그인할 수 있습니다.
PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.


최근 게시물

1.노션에서 작성 중

1.노션에서 작성 중

개편하기 전까지 노션에서 작성 중

2024.04.04//read more

2.ChatGPT

2.ChatGPT

OpenAI로 대규모 언어 모델대화형...

2023.03.16//read more

3.노코딩 게임 엔진 - 빌..

3.노코딩 게임 엔진 - 빌..

빌드 지원안드로이드iOS윈도우즈특이사...

2023.03.14//read more

4.(완료) 미접속 회원 정..

4.(완료) 미접속 회원 정..

[완료] 36명의 회원을 정리하였습니...

2023.02.16//read more

5.매뉴얼 플러스 - 전자제..



안정적인 DNS 서비스 DNSEver
DNS Powered by DNSEver.com


가위바위보 게임

푸딩뱃살 | 2015.11.04 23:49 | 조회 5756
가위바위보 게임

랜덤 사용, UGUI 버튼, 코루틴

kbbgame.unitypackage : 유니티 패키지
rock-paper-scissors.png : 리소스 이미지



KBBGame.cs
using UnityEngine;
using System.Collections;

// 컴퓨터 가위바위보 스크립트
public class CCOMKbb : MonoBehaviour {

    // C++ 배열 - Sprite kbbSpreties[3];
    public Sprite[] kbbSprites; // Sprite형 배열 변수 선언
    SpriteRenderer spriteRenderer; // SpriteRenderer 객체 참조 변수
    int spriteIndex = 0; // 가위바위보 sprite 배열 번호

    // sprite 변경 시간
    public float spriteChangeTime;

    void Start () {

        spriteRenderer = GetComponent<spriterenderer>();

        // 코루틴 생성
        StartCoroutine("KBBSpriteChange");
    }

    // 컴퓨터가 가위바위 보를 결정함
    public int GetComKbbNum()
    {
        // 컴퓨터의 가위바위보를 추출함
        // Random.Range(처음값, 끝값); 처음값~끝값의 랜덤값 추출
        int kbb = Random.Range(0, 3);
        // 코루틴 정지
        StopCoroutine("KBBSpriteChange");
        // sprite 교체
        spriteRenderer.sprite = kbbSprites[kbb];

        return kbb;
    }

    // 컴퓨터의 가위바위보 생각을 표시함, (코루틴) 리턴 타입
    IEnumerator KBBSpriteChange()
    {
        // 무한 반복
        while(true)
        {
            // 지정한 시간만큼 대기
            yield return new WaitForSeconds(spriteChangeTime);

            // spriteIndex 증가
            spriteIndex++;

            // spriteIndex가 2보다 커지면 다시 0으로 변경
            if (spriteIndex > 2) spriteIndex = 0;

            // 인덱스에 해당하는 sprite 이미지를 spriteRenderer에 셋팅함
            spriteRenderer.sprite = kbbSprites[spriteIndex];

            // 코루틴 코드 실행
            //Debug.Log("1초마다 실행되는 코드!!!");
        }
    }

    public void ReSetComKbb()
    {
        // 계속 돌기때문에 멈춰주는 것이 좋다.
        StopCoroutine("KBBSpriteChange");
        StartCoroutine("KBBSpriteChange");
    }
}

CKBBGameManager.cs
using UnityEngine;
using System.Collections;

// UGUI 사용
using UnityEngine.UI;


// 게임 매니저
public class CKBBGameManager : MonoBehaviour {

    // 가위바위보 상수
    const int KAWI = 0;
    const int BAWI = 1;
    const int BO = 2;

    // CCOMKbb 스크립트 컴포넌트 참조, 컴퓨터 게임 오브젝트 참조
    public CCOMKbb comKbb;
    // CPlayerKbb 스크립트 컴포넌트 참조
    public CPLAYERKbb playerKbb;

    // 게임 결과 출력 텍스트(UI)
    public Text gameResultText;
    public Text gameVsText;

    // 플레이어와 컴퓨터의 승리 카운트
    int playerWinCount = 0;
    int comWinCount = 0;

    // 게임 플레이
    public void Play()
    {
        int com_kbb = comKbb.GetComKbbNum();
        int player_kbb = playerKbb.GetPlayerKbbNum();

        // Debug.Log("컴퓨는 " + com_kbb + "를 냈고 유저는 " + player_kbb + "를 냈습니다.");

        /*
        // 판정
        // 플레이어 승리
        if (((player_kbb == 0) && (com_kbb == 2)) ||
       ((player_kbb == 1) && (com_kbb == 0)) ||
       ((player_kbb == 2) && (com_kbb == 1)))
        {
            Debug.Log("플레이어 승리");
        }
        // 컴퓨터 승리
        else if (((player_kbb == 2) && (com_kbb == 0)) ||
       ((player_kbb == 0) && (com_kbb == 1)) ||
       ((player_kbb == 1) && (com_kbb == 2)))
        {
            Debug.Log("컴퓨터 승리");
        }
        // 비김
        else
        {
            Debug.Log("비김");
        }
        */
        
        // 또는
        // 플레이어 승리
        if ((com_kbb == KAWI && player_kbb == BAWI) ||
       (com_kbb == BAWI && player_kbb == BO) ||
       (com_kbb == BO && player_kbb == KAWI)) {
            gameResultText.text = "WIN!!";
            playerWinCount++;
        } 
        // 컴퓨터 승리
        else if((com_kbb == BAWI && player_kbb == KAWI) ||
        (com_kbb == BO && player_kbb == BAWI) ||
        (com_kbb == KAWI && player_kbb == BO)) {
            gameResultText.text = "LOSE!!";
            comWinCount++;
        }
        // 무승부
        else {
            gameResultText.text = "DRAW!!";
        }

        // 승부 출력
        gameVsText.text = ("PLAYER " + playerWinCount + " vs Com " + comWinCount);
        
        // 또는
        // .ToString()을 사용하면 문자형으로 변경
        // gameVsText.text = ("PLATER " + playerWinCount.ToString() + " vs Com " +
        // comWinCount.ToString());
    }

    public void OnRestartButtonClick()
    {
        // 텍스트 변경
        gameResultText.text = "PLAY!!";
        // comKbb.cs의 코루틴 다시 실행
        comKbb.ReSetComKbb();
    }
}

CPLAYERKbb.cs
using UnityEngine;
using System.Collections;

public class CPLAYERKbb : MonoBehaviour {

    // 게임 매니저 참조
    public CKBBGameManager kbbGameManager;

    // 플레이어 가위바위보 값
    public int kbb;

    public void OnKbbButtonClick(int kbb)
    {
        // Debug.Log("플레이어" + kbb + "빈 버튼을 눌렸습니다.");
        
        // this는 클래스 안에서의 변수에 넣기 위한
        // 플레이어의 가위바위보값을 저장
        this.kbb = kbb;

        // 게임 매니저에게 게임 플레이를 요청함
        kbbGameManager.Play();
    }

    // 플레이어의 가위바위보를 리턴
    public int GetPlayerKbbNum()
    {
        return kbb;
    }
}
146개(4/8페이지)
유니티
번호 제목 글쓴이 조회 날짜
공지 유니티 강좌 모음(영문) 푸딩뱃살 60280 2013.08.28 12:02
공지 유니티 경고, 에러 모음 (재정리 예정) 첨부파일 [1+1] 푸딩뱃살 71071 2013.08.12 00:09
84 [유니티] 게임에 로그인 붙이기 첨부파일 [2+1] 푸딩뱃살 5595 2015.12.02 20:55
83 [스트립트] Json Parser (파싱) 첨부파일 푸딩뱃살 1415 2015.11.25 11:24
82 [유니티] 플랫포머(Platformer) 게임 첨부파일 [1+1] 푸딩뱃살 4588 2015.11.22 11:56
81 [유니티] 2D 슈팅 게임3 첨부파일 푸딩뱃살 4786 2015.11.20 10:31
80 [유니티] Fly Plane 게임 첨부파일 푸딩뱃살 5301 2015.11.17 23:01
79 [유니티] 2D 슈팅 게임2 첨부파일 푸딩뱃살 4160 2015.11.13 01:01
78 [유니티] 2D 슈팅 게임 첨부파일 푸딩뱃살 5713 2015.11.12 02:08
77 [유니티] 2D 캐릭터 이동 컨트롤 (애니메이션) 첨부파일 [6+4] 푸딩뱃살 13218 2015.11.10 22:01
76 [유니티] 탱크 게임2 첨부파일 푸딩뱃살 4412 2015.11.10 21:54
75 [유니티] 탱크 게임 첨부파일 푸딩뱃살 4004 2015.11.09 23:36
74 [유니티] 오리 잡자 게임 첨부파일 푸딩뱃살 4342 2015.11.07 02:00
73 [유니티] 2D 캐릭터 키 애니메이션 첨부파일 푸딩뱃살 3982 2015.11.06 00:54
>> [유니티] 가위바위보 게임 첨부파일 [2+2] 푸딩뱃살 5757 2015.11.04 23:49
71 [참고] Xbox360 컨트롤러 레이아웃 첨부파일 푸딩뱃살 4626 2015.10.21 18:52
70 [유니티] 애셋 스토어에서 다운로드 받은 경로 (v5.x) 첨부파일 푸딩뱃살 4282 2015.08.03 17:08
69 [유니티] 크롬에서 유니티 웹플레이어 실행이 안될 때 첨부파일 푸딩뱃살 8574 2015.06.12 17:18
68 [정보] Unity 5.x 부터는 푸딩뱃살 4701 2015.03.16 21:46
67 [참고] Unity 3.x Game Development Essentials 비밀글 푸딩뱃살 8 2015.02.25 16:57
66 [스트립트] Camera.ScreenPointToRay 첨부파일 푸딩뱃살 4311 2015.01.11 21:08
65 [유니티] Camera (카메라) 첨부파일 푸딩뱃살 1901 2015.01.10 15:17