티스토리 뷰
문제 설명
실패안 1
package NewProject;
import java.util.Random;
import java.util.Scanner;
class Monkey{
String color;
int bomul;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getBomul() {
return bomul;
}
public void setBomul(int bomul) {
this.bomul = bomul;
}
//원숭이가 말하기
public void print() {
if(bomul==1) {
System.out.println(getColor() + " 원숭이가 물건을 가지고 있습니다.");
}else {
System.out.println(getColor() + " 원숭이가 물건을 가지고 있지 않습니다.");
}
}
}
class GameStart{
Random r = new Random();
int start = 0; //시작 인덱스 (빨간원숭이)
Monkey[] mk = new Monkey[5];
String[] color = {"빨강","노랑","파랑","초록","검정"};
int[] num = {1,0,0,0,0}; //1이란 숫자를 상자로 간주함
GameStart() {
//5마리의 원숭이 객체를 만들어주고 각각 색과 상자를 넣어줌
for(int i=0;i<mk.length;i++) {
mk[i] = new Monkey();
mk[i].setColor(color[i]);
mk[i].setBomul(num[i]);
}
}
public void give() {
int index = 0;
int a = r.nextInt(2); // 1(우), 0(좌)
int b = r.nextInt(5)+1; //1 ~ 5 이동거리
System.out.println(a);
System.out.println(b);
if(a == 1) { //오른쪽으로 이동
System.out.println("오른쪽으로 이동");
if(start+b > 4) { //오른쪽으로 이동때 인덱스 4를 초과했을경우
index = (start + b - 4) -1; //초과한 값만큼을 추출하여 거기서 -1
int first = mk[start].getBomul();
int second = mk[index].getBomul();
mk[start].setBomul(second);
mk[index].setBomul(first);
}else {
index = start + b;
int first = mk[start].getBomul();
int second = mk[index].getBomul();
mk[start].setBomul(second);
mk[index].setBomul(first);
}
}else if(a == 0){//왼쪽으로 이동
System.out.println("왼쪽으로 이동");
if(start-b < 0) { //오른쪽으로 이동때 인덱스 0를 미만했을 경우
index = (4-start-b) +1; //미만한 값만큼을 추출하여 거기서 +1
int first = mk[start].getBomul();
int second = mk[index].getBomul();
mk[start].setBomul(second);
mk[index].setBomul(first);
}else {
index = start + b;
int first = mk[start].getBomul();
int second = mk[index].getBomul();
mk[start].setBomul(second);
mk[index].setBomul(first);
}
}
index = 0;
}
}
public class Start {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
GameStart gs = new GameStart();
System.out.println("-----원래 위치-----");
for(int i=0;i<gs.mk.length;i++) {
gs.mk[i].print();
}
while(true) {
System.out.println("물건 돌리기 시작(1) 종료(2)");
int start = sc.nextInt();
if(start == 1) {
gs.give();
for(int i=0;i<gs.mk.length;i++) {
gs.mk[i].print();
}
}else if(start == 2){
System.out.println("프로그램 종료");
break;
}else {
System.out.println("다시 입력");
}
}
}
}
실패안 2
package NewProject;
import java.util.Random;
import java.util.Scanner;
class Monkey{
String color;
int bomul;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getBomul() {
return bomul;
}
public void setBomul(int bomul) {
this.bomul = bomul;
}
//원숭이가 말하기
public void print() {
if(bomul==1) {
System.out.println(getColor() + " 원숭이가 물건을 가지고 있습니다.");
}else {
System.out.println(getColor() + " 원숭이가 물건을 가지고 있지 않습니다.");
}
}
}
class GameStart{
Random r = new Random();
Monkey[] mk = new Monkey[5];
String[] color = {"빨강","노랑","파랑","초록","검정"};
int[] num = {1,0,0,0,0}; //1이란 숫자를 상자로 간주함
GameStart() {
//5마리의 원숭이 객체를 만들어주고 각각 색과 상자를 넣어줌
for(int i=0;i<mk.length;i++) {
//원숭이 객체 5개 만들기
mk[i] = new Monkey();
//원숭이 객체에 순서대로 색깔과 상자여부를 넣어줌
mk[i].setColor(color[i]);
mk[i].setBomul(num[i]);
}
}
public void give() {
Scanner sc = new Scanner(System.in);
int start = 0; //시작 인덱스 (빨간원숭이)
while(true) {
System.out.println("물건 돌리기 시작(1) 종료(2)");
int start2 = sc.nextInt();
int index = 0;
if(start2 == 1) {
int a = r.nextInt(2); // 1(우), 0(좌)
int b = r.nextInt(5)+1; //1 ~ 5 이동거리
System.out.println(a);
System.out.println(b);
if(a == 1) { //오른쪽으로 이동
System.out.println("오른쪽으로 이동");
if(start+b > 4) { //오른쪽으로 이동때 인덱스 4를 초과했을경우
index = (start + b - 4) -1; //초과한 값만큼을 추출하여 거기서 -1
int first = mk[start].bomul;
int second = mk[index].bomul;
mk[start].setBomul(second);
mk[index].setBomul(first);
}else {
index = start + b;
int first = mk[start].bomul;
int second = mk[index].bomul;
mk[start].setBomul(second);
mk[index].setBomul(first);
}
}else if(a == 0){//왼쪽으로 이동
System.out.println("왼쪽으로 이동");
if(start-b < 0) { //오른쪽으로 이동때 인덱스 0를 미만했을 경우
index = (4-start-b) +1; //미만한 값만큼을 추출하여 거기서 +1
int first = mk[start].bomul;
int second = mk[index].bomul;
mk[start].setBomul(second);
mk[index].setBomul(first);
}else {
index = start + b;
int first = mk[start].bomul;
int second = mk[index].bomul;
mk[start].setBomul(second);
mk[index].setBomul(first);
}
}
int j = 0;
for(int i=0;i<mk.length;i++) {
mk[i].print();
if(mk[i].bomul == 1) {
j = i;
}
}
start = j; //상자가 있는 위치에 인덱스 값을 start 지점으로 놓아줌.
}else if(start2 == 2) {
System.out.println("프로그램 종료");
break;
}else {
System.out.println("다시 입력");
}
}
}
}
public class Start {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
GameStart gs = new GameStart();
System.out.println("-----원래 위치-----");
for(int i=0;i<gs.mk.length;i++) {
gs.mk[i].print();
}
gs.give();
}
}
아예 내가 못할 것 같으면 다음에 하자 ~ 강사님께 여쭤보자 ~ 등 할텐데 뭔가 될 것 같은데 계속 안되니까 약오른다;;
2~3번 플레이하면 정상적으로 되다가도 갑자기 엉뚱하게 되고 그런다 이유를 모르겠다...일단 마찬가지로 강사님께 질문은 보내놓은 상태
'고뇌' 카테고리의 다른 글
왜지!? 스타그래프트 게임? (0) | 2022.06.12 |
---|---|
옛날 핸드폰 알파벳 입력 문제 2시간째 파는중.. (0) | 2022.06.05 |
html 공부중 .. (0) | 2022.05.29 |
JAVA : interface와 추상화 클래스 공부 중 ... !! (0) | 2022.05.27 |
문방구 게임 왜 오류가 날까.. (0) | 2022.05.24 |
댓글