언어/java

과제

Eprld 2024. 2. 19. 18:20

/*
 * 가위바위보 게임을 작성합니다
 * 
 * 1.모든 내용은main() 내부에 정의
 * 2. 게임의 룰은 다음과 같음
 * 3. 게임이 시작되면, ===== 가위바위보 게임을 시작합니다(y/n) ===== 출력
 * 4. 만약 y 를 입력하면 아래처럼 나옵니다.
 * 4-1 가위(1), 바위(2), 보(3) 메세지 출력
 * 4-2 1 or 가위 를 입력 하면 사용자의 값은 가위입니다.
 * 4-3 컴은 랜덤값을 이용해서 1, 2, 3 중 하나를 생성후 사용자와 비교 합니다
 * 4-4 결과를 컴에 출력한다. ==> ex> 당신 : 가위 컴 : 보 U win draw or lose
 * 4-5 결과 출력 후 게임 더하기 (y/n) 를 출력 하소, y인 경우 4-1 로 되돌아 가서 게임이 다시 시작된다
 * 즉 n 가 입력될떄까지 게임 무한 반복죔
 * 4-6 만약 게임을 더 이상 하지 않는 n 가 입력된다면, 좋은 하루 되세요~ 출력 후 게임 종료
 * 
 * 5. 위 4번 에서 n 을 입력하면 게임도 안하는 당신은 바보 라는 메세지 출력 후 게임 종료
 */
package cohttp://m.avi6.begin;

import javax.swing.JOptionPane;

public class GawiBawiBoGame1 {



//메세지 객체를 이용해서 메세지 이용, 따라서 필드로 Message 객체를 선언

private Message message;

//id 필드도 선언
private String id;

//게임 시작 여부 및 계속 지속 여부 필드 선언
private boolean isBegin;

private boolean isContinue;

private int win;
private int draw;
private int lose;


//게임 횟수 카운트 
private int  count;


//상수 : 항상 고정된 값을 갖는 변수
//자바에서 상수는 특정 키워드를 사용해서 합니다. final 키워드를 이용하면 상수가 됩니다,
//즉 값을 변경하면 무조건 에러임
//사용자 및 컴위 정보를 저장하는 배열의 길이를 담는 상수 선언
//자바에서 상수는 항상 대문자
private static final int RECORD_VALUE = 20;

//사용자의 값을 저장하는 배열 선언
private String[] userValues;

private String[] comValues;


//생성자를 어떻게 정의 할까요?? 
public GawiBawiBoGame1() {


}

//첫 메세지를 출력하도록 하는 메서드 정의
//ID입력을 받음,, 존재여부에 따라서 메세지 내용이 조금 틀려지겟넹,,,

public void printGameBeginMsg() {
//일반메세지 이므로, 객체 생성없이 static 메서드 호출 해서 메세지 출력함
this.id = Message.getInitMsg();
//System.out.println(id.length());
//id 존재 유무에 따라서 Message 클래스의 생성자를 호출할 떄 값이 틀려지게 보냄
if(id.length() == 0 || id.isEmpty()) {//사용자 ID 없음.
message  = new Message(null);
return;
}
message = new Message(id);

String res = message.playGameMsg();

switch (res) {
case "Y":
case "y":
this.isBegin = true;
break;
}
//사용자의 입력값 여부에 따른 프로그램 종료 또는 게임 start
if(!isBegin) {
message.sayYock();
System.exit(0);
}
startGame(); //게임시작 메서드 호출

}
  private void startGame() {
  this.userValues = new String[RECORD_VALUE];
  this.comValues = new String[RECORD_VALUE];
 
  while(true) {  
  //무한루프 돌면서 게임을 진행함  
  count++; //게임판수 증가
  String res = message.getInput();
  //컴값도 얻어냅니다
  int comVal = getRandom.postRandom(1, 3);
 
  //각 생성된 값을 배열에 넣어줍니다.
  userValues[count - 1] = res;
  comValues[count - 1] = String.valueOf(comVal);
 
  //배열의 사용자와 컴의 값을 넣어줍니다
  //넣기전에 생각할 것...  만약 게임수가 20회가 넘으면 새 배열을 생성해 줘야 함,,
  if(count - 1 == RECORD_VALUE) {
  //새 배열을 생성해서, 기존값을 모두 복사하고, 다음 index 에 값을 넣을 수 있는 메서드를 정의 및 호출해서 사용해야함
  expandArr(count);
 
  }
 
 
  }

  }
  private void expandArr(int length) {
  String[] tempUserExpArr = new String[length * 2];
String[] tempcomExpArr = new String[length * 2];

//System 클래스에 보면 arrayCopy 란 API 가 잇음
//또는 Arrays 클래스에 보면 배열 복제 API 도 잇고,,

System.arraycopy(userValues, 0, tempUserExpArr, 0, userValues.length);
System.arraycopy(userValues, 0, tempcomExpArr, 0, comValues.length);

this.userValues = tempUserExpArr;
this.comValues = tempcomExpArr;
  }












































/*
public static void main(String[] args) {
// TODO Auto-generated method stub
char gbb;

int paper;
int rock;
int c;

int user = 0;

boolean isCorrect = false;

dan: while (true) {
String input = JOptionPane.showInputDialog("가위바위보 게임을 시작합니다(y/n)");

if (input.equalsIgnoreCase("n")) {// 게임종료if..
System.out.println("게임도 안하는 당신은 바보");
break;
}

input = JOptionPane.showInputDialog("가위(1), 바위(2), 보(3) 입력 : ");

switch (input) {
case "1":
case "가위":
user = 1;
break;

case "2":
case "바위":
user = 2;
break;

case "3":
case "보":
user = 3;
break;
}

// 컴값 생성

int com = (int) (Math.random() * 3 + 1);
System.out.println("나는 " + input + "컴퓨터는 " + com);

if (com == user) {
System.out.println("비겼습니다");
} else if ((user == 1 && com == 2) || (user == 2 && com == 3) || (user == 3 && com == 1)) {
System.out.println("졌습니다");
} else if ((user == 3 && com == 2) || (user == 2 && com == 1) || (user == 1 && com == 3)) {
System.out.println("이겼습니다");
}

   continue;

}

}
*/
}



 

package langes;

 

import javax.swing.JOptionPane;

 

public class StringUtil {

 

 

 

 

 

//@ 존재 여부 있다면 id 를 리턴함

public static String getEmailId(String email) {

int atIdx = email.indexOf('@');

if(atIdx == -1)

return null;

String id = email.substring(0, atIdx);

return id;

}

public static int checkIdLength(String id) {

//지역변수를 이용해서 값을 리턴시킵니다

//-1이 리턴된다는 의미는 범위가 너무 큼, 0은 공백, 1은 범위 작음, 2 ok

 

int leng = id.length();

int result;//

 

if(id.isEmpty()) {

return 0;

}

 

 

if(leng < 8) {

result = 1;

}else if(leng > 15) {

result = -1;

}else {

result = 2;

}

return result;

}

 

 

//대문자 여부 검증 메서드 정의

public static boolean upperContain(String id) {

for(int i = 0; i < id.length(); i++) {

if(Character.isUpperCase(id.charAt(i))) {

return true;

}

}

return false;

}

 

 

public static boolean digiContain(String id) {

for(int i = 0; i < id.length(); i++) {

if(Character.isDigit(id.charAt(i))) {

return true;

}

}

return false;

}

 

 

 

 

 

 

 

 

 

 

}























package langes;

 

import javax.print.attribute.standard.JobKOctetsProcessed;

import javax.swing.JOptionPane;

 

 

/*

* 여러분이 작성한 가위바위보 게임이 시작되면, ID를 받게 합니다.

* 이때 받은 ID를 검증하는 클래스 입니다.

*

* ID 조건은 이메일이고, 이메일은 아래와 같은 조건을 가지게 됩니다.

*

* @ 반드시 있어야 하고, @ 이전 ID 는 8 ~ 15자 사이, 대문자, 숫자가 하나 이상 존재해야 합니다.

*

* 위 조건이 이미 자바스크립트 시간에 했었습니다.

*

* 단, 위 조건을 처리하도록 하는 기능은 static 으로 처리 합니다.

*

* 그리고 내부적으로 각각의 검증을 하는 메서드를 private 로 처리하고, 결과만 되돌릴지,

* 아니면, 추후 비슷한 기능을 위해 각각의 검증 메서드를 public 으로 처리해서 재사용할지는 여러분이 결정하시면 됩니다,

*

* 결과는 다음과 같아야 합니다.

*

* 게임 시작 --> ID 입력--> 입력 ID 검증 --> 검증 OK --> 실행

* 검증이 실패하면 --> 어떤 부분이 잘못됐는지 출력 후 , 재입력 받도록 하세요. 검증이 실패하면 절대 실행되지 않습니다.

*/

 

 

 

public class Stirng {

 

public static void main(String[] args) {

 

String start = JOptionPane.showInputDialog("게임을 시작하겠습니까?");

 

 

 

String email = JOptionPane.showInputDialog("Email입력");

 

String id = StringUtil.getEmailId(email);

 

int res = StringUtil.checkIdLength(id);

 

if(res != 2) {

System.out.println("입력한 이메일 ID에 문제가 있습니다.");

return;

}

 

 

System.out.println(StringUtil.upperContain(id));

System.out.println(StringUtil.digiContain(id));

 

 

System.out.println(res);

}

 

 

 

}

 

 





















/*
public static void main(String[] args) {
// TODO Auto-generated method stub
char gbb;

int paper;
int rock;
int c;

int user = 0;

boolean isCorrect = false;

dan: while (true) {
String input = JOptionPane.showInputDialog("가위바위보 게임을 시작합니다(y/n)");

if (input.equalsIgnoreCase("n")) {// 게임종료if..
System.out.println("게임도 안하는 당신은 바보");
break;
}

input = JOptionPane.showInputDialog("가위(1), 바위(2), 보(3) 입력 : ");

switch (input) {
case "1":
case "가위":
user = 1;
break;

case "2":
case "바위":
user = 2;
break;

case "3":
case "보":
user = 3;
break;
}

// 컴값 생성

int com = (int) (Math.random() * 3 + 1);
System.out.println("나는 " + input + "컴퓨터는 " + com);

if (com == user) {
System.out.println("비겼습니다");
} else if ((user == 1 && com == 2) || (user == 2 && com == 3) || (user == 3 && com == 1)) {
System.out.println("졌습니다");
} else if ((user == 3 && com == 2) || (user == 2 && com == 1) || (user == 1 && com == 3)) {
System.out.println("이겼습니다");
}

   continue;

}

}
*/
}

'언어 > java' 카테고리의 다른 글

Field(전역 지역 변수)  (0) 2024.02.24
240222  (0) 2024.02.22
240219  (0) 2024.02.19
배열  (0) 2024.02.19
제어문 break, continue  (0) 2024.02.18