본문 바로가기

Program/JAVA

|| | , && &, 간단 게임 만들기

22.07.21-|| | , && &, 간단 게임 만들기

|| 와 | && 와 &


|| → 앞에만 true만 뒤에는 검사를 안함

|→ 앞 뒤 검사를 진행

⇒ 검사 횟수의 차이

TEST


package com.lsc.jul21_test;

import java.util.Random;
import java.util.Scanner;

/*
 * 가위바위보 게임을 만들려고합니다.
 * 숫자를 입력해서
 * 콘솔창에 1.가위 2.바위 3.보
 * 1~3까지 숫자를 입력하면 
 * 컴퓨터도 가위바위보 중 랜덤으로 하나 나오게 하고
 * 거기에 이겼는지 졌는지에대한 결과가 콘솔창에 나오게
 */
public class test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub\
        Random r = new Random();
        int ran = r.nextInt(3)+1;

        System.out.println("==========================");
        System.out.println("1.가위 2.바위 3.보");
        System.out.println("==========================");
        Scanner input =new Scanner(System.in);
        int i = input.nextInt();
        System.out.println("computer");
        print(ran);
        System.out.println("you");
        print(i);



        if(i==ran) {
            System.out.println("비겼습니다.");
        }else if((i-ran)==2 || (ran-i)==2 || (ran-i)==1) {
            System.out.println("졌습니다.");
        }else {
            System.out.println("이겼습니다.");
        }

    }

    static void print(int in) {
        if(in==1) {
            System.out.println("가위");
        }else if(in==2) {
            System.out.println("바위");
        }else if(in==3) {
            System.out.println("보");
        }
    }

}
public class test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub\
        Random r = new Random();
        int ran = r.nextInt(3)+1;
        String com = ran==1? "가위" : ran==2? "바위" : "보";
        System.out.println("==========================");
        System.out.println("1.가위 2.바위 3.보");
        System.out.println("==========================");
        Scanner input =new Scanner(System.in);
        int i = input.nextInt();
        //삼항연사자 사용
        String you = i==1? "가위" : ran==2? "바위" : "보";

        System.out.println(com);
        System.out.println(you);

        //3-1 ->v 2-1 

        if(i==ran) {
            System.out.println("비겼습니다.");
        }else if((i-ran)==2 || (ran-i)==2 || (ran-i)==1) {
            System.out.println("졌습니다.");
        }else if((ran-i)==2) {
            System.out.println("이겼습니다.");
        }

    }
package com.lsc.jul21_test;

import java.util.Random;
import java.util.Scanner;

/*
 * 가위바위보 게임을 만들려고합니다.
 * 숫자를 입력해서
 * 콘솔창에 1.가위 2.바위 3.보
 * 1~3까지 숫자를 입력하면 
 * 컴퓨터도 가위바위보 중 랜덤으로 하나 나오게 하고
 * 거기에 이겼는지 졌는지에대한 결과가 콘솔창에 나오게
 */
public class test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub\
        Random r = new Random();
        String list[] = {"가위","바위","보"};
        int ran = r.nextInt(3)+1;


        System.out.println("==========================");
        System.out.println("1.가위 2.바위 3.보");
        System.out.println("==========================");
        Scanner input =new Scanner(System.in);
        int i = input.nextInt();


        System.out.println(list[ran-1]);
        System.out.println(list[i-1]);

        //3-1 ->v 2-1 1,3->l 2-3 -v
        int chk = ran-i;
        if(i==ran) {
            System.out.println("비겼습니다.");
        }else if(chk==1 || chk==-2) {
            System.out.println("졌습니다.");
        }else if(chk==2 || chk==-1) {
            System.out.println("이겼습니다.");
        }

    }
}

BaseBall Game


package com.lsc.jul21_test;

import java.util.Random;
import java.util.Scanner;

/*
 * 숫자야구 게임
 * 랜덤으로 3자리를 뽑고
 * 스트라이크, 볼을 구현 
 */

public class Test1 {
    static int ran[]= {0,0,0};
    static int strike = 0;
    static int ball=0;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        compick();
        System.out.println("랜덤값 생성");
        System.out.printf("%d%d%d",ran[0],ran[1],ran[2]);
        Scanner input = new Scanner(System.in);
        while(true) {
            pick(input.nextInt());
            if(strike==3) {
                break;
            }
        }



    }

//랜덤으로 3자리 숫가자 나오는 메소드 중복 없게
    static void compick() {
        Random random = new Random();
        int temp;
        for(int i =0; i<3; i++) {
            ran[i] = random.nextInt(9);
        }
        while(true) {
            if(chkran()) {
                break;
            }
        }

    }

    static boolean chkran() {
        Random random = new Random();
        if(ran[0]==ran[1]) {
            ran[1]=random.nextInt(9);
            return false;
        }else if(ran[1]==ran[2]) {
            ran[2]=random.nextInt(9);
            return false;
        }else if(ran[2]==ran[0]) {
            ran[0]=random.nextInt(9);
            return false;
        }
        return true;
    }

    //선택
    static void pick(int input) {
        int hund = input/100;
        int ten = input%100/10;
        int one = input%10;
        jude(hund,ten,one);
        System.out.printf("%d s %d ball",strike,ball);
    }

    //판단
    static void jude(int hund,int ten, int one) {
        strike=0;
        ball=0;
            if(ran[0]==hund) {                                                                                         
                strike+=1;    
            }else if(ran[0]==ten | ran[0]==one) {
                ball+=1;
            }

            if(ran[1]==ten) {
                strike+=1;    
            }else if(ran[1]==hund | ran[1]==one) {
                ball+=1;
            }

            if(ran[2]==one) {
                strike+=1;    
            }else if(ran[2]==ten | ran[2]==hund) {
                ball+=1;
            }

    }

}

디버깅


String you = i==1? "가위" : ran==2? "바위" : "보";
//삼항 연산자 비교문 여러개
if((i-ran)==2 || (ran-i)==2 || (ran-i)==1) -> 계속 값을 연산하고 비교하는게 성능에 안좋다 

//따로 연산한 값은 빼주고 그 변수로 비교 
int chk = ran-i;
        if(i==ran) {
            System.out.println("비겼습니다.");
        }else if(chk==1 || chk==-2) {
            System.out.println("졌습니다.");
        }else if(chk==2 || chk==-1) {
            System.out.println("이겼습니다.");
        }