회원 로그인
|
가위바위보 게임
가위바위보 게임
랜덤 사용, UGUI 버튼, 코루틴
kbbgame.unitypackage : 유니티 패키지
rock-paper-scissors.png : 리소스 이미지
KBBGame.cs
CKBBGameManager.cs
CPLAYERKbb.cs
랜덤 사용, 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; } }
- kbbgame.unitypackage (153.2KB) (4)
- rock-paper-scissors.png (152.3KB) (3)
댓글 2개
| 엮인글 0개
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 |