기타/프로그래밍 분류

java - 패키지,반복문, 입력예제

zelkova 2013. 11. 9. 13:27

<목차로 돌아가기>


들어가기 전에 1

예전에 프로그램 연습할때 가위바위보 비교를 하는데 무진장 귀찮더라구요

if문을 9개를 쓰니까 짜증이나서 간략하게 줄였습니다.


가위 1

바위 2

보    3

이라고 한다면

이기는 경우의 수를 생각해봅시다.

1-3=-2

2-1=1

3-2=1


이렇게 결과는 -2,1이 나옵니다.

지는경우는 반대로 -1, 2가 나오지요

비기는 경우는 0이 나오구요


나름 고민해서 만든 소스입니다 -_-V

int checkGame(int com, int my)

{

int a;

a=com-my;

ggb_total++;

if(a==1||a==-2)

{

ggb_lost++;

a=2;

}

else if(a==0)

{

a=0;

}

else

{

ggb_win++;

a=1;

}

return a;

}


들어가기 전에 2

혹시 패키지 컴파일 못해서 울거같아 올립니다.

패키지 컴파일은 쪼오끔 다릅니다.


- 컴파일 하는 방법 -

C:\test\ggb\Main.java

이렇게 나와 있다면 

C:\test\ggb>javac *.java

이렇게하면 아래 3개의 파일이 모두 컴파일이 되지요


- 실행하는 방법 - 

C:\test>java ggb.Main

입력하면 잘 실행 됩니다.


Player.java

package ggb;

import java.io.*;

public class Player

{

BufferedReader input_key;

public Player()

{

input_key=new BufferedReader(new InputStreamReader(System.in));

}

int go()

{

int a;

String str;


a=0;

str="";

try

{

System.out.println("선택하시오 (1:가위, 2:바위, 3:보, 4:종료)");

str = input_key.readLine();

}

catch (IOException err)

{

a=4;

}


int i=1;

while(i==1)

{

if(a > 0 && a < 5)

{

System.out.println("입력3:"+str);

i++;

}

else

{

input_key=new BufferedReader(new InputStreamReader(System.in));

System.out.println(" 선택지만 입력하세요. \n (1:가위, 2:바위, 3:보, 4:종료)");

try

{

str = input_key.readLine();

}

catch (Exception e )

{

a=4;

}

}

}

return a;

}

}


Computer.java

package ggb;

import java.util.*;

public class Computer

{

Random ggb_rnd;

public Computer()

{

ggb_rnd=new Random();


}

int go()

{

int a;


a = ggb_rnd.nextInt(3)+1;

return a;

}

}




Main.java

package ggb;

public class Main

{

Computer ggb_com;

Player ggb_Player;

int ggb_total;

int ggb_win;

int ggb_lost;


public Main()

{

ggb_com=new Computer();

ggb_Player=new Player();

ggb_total=0;

ggb_win=0;

ggb_lost=0;

}

String getValue(int a)

{

String str;

str="";

if(1==a)

{

str="가위";

}

else if(2==a)

{

str="바위";

}

else if(3==a)

{

str="보";

}

return str;

}

void showPlay(int com, int p, int result)

{

String str;


switch(result)

{

case 0:

str="비김";

break;

case 1:

str="이김 ㅊㅋㅊㅋ";

break;

default:

str="졌음 ㅋㅋㅋㅋ";

break;

}

System.out.println("컴퓨터:" + getValue(com) + "\n플레이어:" + getValue(p));

System.out.println("결과:" + str);

}

void showEndGame()

{

int equal;

float rate;


equal=ggb_total - (ggb_win + ggb_lost);

rate=(float)ggb_win/ggb_total;


System.out.println("-------------------------");

System.out.println("총게임수 : " + ggb_total);

System.out.println("이긴수 : " +ggb_win);

System.out.println("비긴수 : " +equal);

System.out.println("진수 : " + ggb_lost);

System.out.println("승률 : " + rate );

System.out.println("-------------------------");

}

int checkGame(int com, int my)

{

int a;

a=com-my;

ggb_total++;

if(a==1||a==-2)

{

ggb_lost++;

a=2;

}

else if(a==0)

{

a=0;

}

else

{

ggb_win++;

a=1;

}

return a;

}

void run()

{

int com;

int p;

int result;


while(true)

{

p = ggb_Player.go();

com = ggb_com.go();

if(4==p)

{

break;

}

result=checkGame(com,p);

showPlay(com,p,result);

}

showEndGame();

}


public static void main(String[] args)

{

Main m;


m=new Main();

m.run();

}

}















반응형

'기타 > 프로그래밍 분류' 카테고리의 다른 글

Eclips 라인넘버 보기  (0) 2013.11.14
이클립스 디버깅하기  (0) 2013.11.14
8.클래스예제(로또생성기)  (0) 2013.11.06
JAVA - 스레드의 상태변이  (0) 2013.10.16
JAVA - 제네릭  (0) 2013.10.16