반응형



가위바위보.zip


유니티3D 엔진으로 간단한 가위 바위 보 게임을 만들어 보겠습니다


먼저 Scenes 폴더를 만들고 씬을 만들어 Game 이라하고 저장합니다



Resources 폴더를 만들어 예제 소스를 다운받아 드래그하여 넣습니다

여기서 Resources 철자를 틀려서는 안됩니다

 


Main Camera 를 선택하고 display를 16:9 로 맞추고 Scene 화면을 2D 로 합니다


hierachy창에 Canvas를 생성하고 속성을 그림 빨간 박스 와 같이 맞춤니다



Canvas 자식으로 Image 두개를 생성하고 그림과 같이 이름을 바꿉니다


Image에 그림과 같이 Resources에 있는 그림 아무거나 연결합니다



Canvas 자식으로 Button을 생성하고 Button 자식으로 있는 Text 속성을 그림 빨간 박스와 같이 바꿉니다



Button 그리과 같이 3개가 되도록 생성하고 Button 이름을 그림과 같이 바꿉니다


Scene 화면에 그림과 같이 Button 을 크기와 위치을 합니다


Text 를 생성하고 속성을 그림 빨간 박스와 같이 바꿉니다



Text 3개가 되도록 그림과 같이 이름을 바꿉니다


.Scene 화면에 그림과 같이 Text를 배열 합니다



Hierachy 창에 빈 게임 오브젝트를 만들어 GameManager라 이름 붙힙니다


새 스크립트를 만들어 이름을 GameManager 로 합니다



GameManager 스크립트 작성


using UnityEngine;

using System.Collections;

using System.Collections.Generic;

using UnityEngine.UI;


public class GameManager : MonoBehaviour

{


    public Image objMy; // 가위바위보 오브젝트 

    public Image objCom;


    public Text txtMy;

    public Text txtCom;

    public Text txtScore;


    public Text scissors;

    public Text rock;

    public Text paper;


    // int you = 0; // 가위바위보(가위:1, 바위:2, 보:3)

    int com = 0;

    int scMy = 0; // 승패 점수 

    int scCom = 0;


    //--------------------------------

    // 승패 처리

    //--------------------------------

    void CheckScore(int myHand)

    {

        com = Random.Range(1, 4);       // 1~3의 난수

        objCom.GetComponent<Image>().sprite = Resources.Load<Sprite>("Game_" + com) as Sprite;

        objMy.GetComponent<Image>().sprite = Resources.Load<Sprite>("Game_" + myHand) as Sprite;


        // 승패 판정

        int k = myHand - com;


        if (k == 0)

        {

            txtScore.text = "비겼습니다";

        }

        else if (k == 1 || k == -2)

        {

            txtScore.text = "당신이 이겼습니다";

            scMy++;

        }

        else

        {

            txtScore.text = "컴퓨터가 이겼습니다";

            scCom++;

        }


        txtMy.text = "당신 : " + scMy;

        txtCom.text = "컴퓨터 : " + scCom;


        myHand = 0;

    }


    //--------------------------------

    // 화면 처리 

    //--------------------------------



    public void ClickScissors()

    {

        scissors.text = "가위";


        CheckScore(1);

    }


    public void ClickRock()

    {

        rock.text = "바위";

        CheckScore(2);

    }



    public void ClickPaper()

    {

        paper.text = "보";

        CheckScore(3);

    }


}




승패 판정원리

가위 바위 보 게임의 핵심부분이라고 할수 있습니다.

가위 바위 보에 각 각 1~3을 할당해 두고 승패는 다음과 같이 정하면 됩니다. 두값이 같으면 비깁니다.

가위(1) < 바위(2) <보 (3) < 가위(1) <  ~

이긴 값에서 진 값을 빼면 다음과 같은 결과를 얻을 수 있습니다.


바위(2) > 가위(1) -> 2-1 = 1

보(3) > 바위(2) -> 3-2 = 1

가위(1) > 보 (3) -> 1-3 = -2


내 값에서 상대방의 값을 뺀 결과가 1이거나 -2 이면 이기고 그 외에는 진다. 입니다.

이 원리를 이용하여  CheckScore() 함수를 만들어 스크릡트를 짭니다



GameManager 오브젝트에 GameManager 스크립트를  붙히고  그림과 같이 Canvas에 있는 오브젝트 들을 연결합니다 



ButtonScissors 를 선택하고  OnClic()에 GameManager를 연결합니다

그리고 GameManager -> ClicScissors() 를 찾아 연결합니다



ButtonRock 를 선택하고  OnClic()에 GameManager를 연결합니다

그리고 GameManager -> ClickRock() 를 찾아 연결합니다


ButtonPaper 를 선택하고  OnClic()에 GameManager를 연결합니다

그리고 GameManager -> ClickPaper()를 찾아 연결합니다



게임을 실행 하여 버튼을 누르면 컴 퓨터와 가위 바위 보 대결을 하고 점수가 올라 가는지 확인 합니다



 

프로젝트 파일

Rock Paper Scissors.unitypackage


반응형

+ Recent posts