2020/03/04 - [IT/Programming Practice] - [Java] 간단한 출력문
2020/03/04 - [IT/Programming Practice] - [Java] 계산기
2020/03/04 - [IT/Programming Practice] - [Java] 거스름돈 분리 계산
2020/03/04 - [IT/Programming Practice] - [Java] 성적 출력 하기
2020/03/04 - [IT/Programming Practice] - [Java] 짝수, 홀수, 제로 숫자 세기 프로그램
2020/03/04 - [IT/Programming Practice] - [Java] 반지름 입력후 원의 넓이 구하기
2020/03/04 - [IT/Programming Practice] - [Java] 학생 정보 입력 시스템 출력
2020/03/04 - [IT/Programming Practice] - [Java] do~while문을 활용한 출력 프로그램
2020/03/04 - [IT/Programming Practice] - [Java] 이중 do-while 문
2020/03/04 - [IT/Programming Practice] - [Java] while문을 활용한 가위, 바위, 보 게임
2020/03/04 - [IT/Programming Practice] - [Java] 원, 정삼각형, 삼각형 넓이, 둘레 구하기
2020/03/04 - [IT/Programming Practice] - [Java] File I/O 출력
2020/03/04 - [IT/Programming Practice] - [Java] GUI 그래픽 사용자 인터페이스 사용하기
자바 겜블링 게임 및 자바슬롯머신(젯팟) 입니다.
▶ 조건
랜덤한 3개 숫자 맞추기 게임
힌트
배치 관리자는 화면과 비슷하게 지정하기 바람.
컨테이너가 enter 키 이벤트를 받을 수 있도록 reqesetFocus() 메소드를 호출하여 포커스 설정
0~4 범위의 랜덤 수를 발생시키기 위해서 int x = (int)(Math.random()*5) 함수 사용.
Key 리스너 작성하여, key 리스너에는 keyPressed()만 구현하고 enter 키 입력 되었는지 검사 하기
if(e.getKeyChar()==‘\n’)
만약 3개의 숫자가 같은지 검사하여 결과 레이블에 결과 표시
프레임 사이즈 (300 ,200)
★ 소스코드를 복사 하려면 소스코드 오른쪽 상단 "Copy"버튼을 클릭하세요.
소스코드
import java.awt.*;
import javax.swing.*;
public class Lab6_1 extends JFrame {
JPanel c = new JPanel();
JLabel message = new JLabel("시작합니다"); //게임 상태 메시지
JLabel x = new JLabel("0"); //첫 번째 라벨
JLabel y = new JLabel("0");
JLabel z = new JLabel("0");
Lab6_1() {
System.out.println("======================\n학번: 20140000\n이름: 컴돌이\n======================");
setTitle("컴돌이 프레임");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(c);
c.setLayout(null);
message.setLocation(100, -10); //메시지 좌표값
message.setSize(500, 90);
message.setFont(new Font("맑은 고딕", Font.BOLD, 15)); //메시지의 글꼴
c.add(message); //메시지 아벨 판넬에 추가
c.addKeyListener(new key(this));
x.setLocation(80, 50); //첫 번째 숫자 부분
x.setSize(50, 90);
x.setFont(new Font("맑은 고딕", Font.BOLD, 30));
c.add(x); //첫 번째 숫자 라벨 판넬에 추가
y.setLocation(160, 50); //두 번째 숫자 부분
y.setSize(50, 90);
y.setFont(new Font("맑은 고딕", Font.BOLD, 30));
c.add(y); //두 번째 숫자 라벨 판넬에 추가
z.setLocation(120, 50); //세 번째 숫자 부분
z.setSize(50, 90);
z.setFont(new Font("맑은 고딕", Font.BOLD, 30));
c.add(z); //세 번째 숫자 라벨 판넬에 추가
setSize(300, 200); //프레임 창 크기
setVisible(true);
c.requestFocus(); //판넬에서 키 입력을 받기위한 구문
}
public static void main(String[] args) {
new Lab6_1();
}
}
class key extends KeyAdapter {
Lab6_1 main;// Lab6_1 객체 변수
key(Lab6_1 f) {// key 클래스를 생성하였을 때, Lab6_1 객체를 받아온다.
main = f;
}
public void keyPressed(KeyEvent e) {
int r = (int) (Math.random() * 5); //첫 번째 숫자의 랜덤 함수
int g = (int) (Math.random() * 5); //두 번째 숫자의 랜덤 함수
int b = (int) (Math.random() * 5); //세 번째 숫자의 랜덤 함수
if (e.getKeyChar() == '\n') { //엔터의 입력값을 받는다.
main.x.setText("" + r);
main.y.setText("" + g);
main.z.setText("" + b);
}
if (r == g && g == b && b == r) { //모두 같은수 일때
main.message.setText("모두 같은수 입니다"); //메시지를 출력 한다.
}
else {
main.message.setText("아쉽군요"); //아닐때의 메시지 출력.
}
}
}
◈ 소스코드를 보시고 고칠 부분이나 더 좋은 로직이 있다면 코멘트 달아주세요!
이상 문제 13번 입니다.
컴돌이블로그
#자바
'IT > Programming' 카테고리의 다른 글
[JSP] 입력받아 출력하기 및 while / for 문 출력 하기 (0) | 2020.03.24 |
---|---|
[JSP] 상품 구매 페이지 만들기 (0) | 2020.03.04 |
[Java] GUI 그래픽 사용자 인터페이스 사용하기 (0) | 2020.03.04 |
[Java] File I/O 출력 (0) | 2020.03.04 |
[Java] 원, 정삼각형, 삼각형 넓이, 둘레 구하기 (0) | 2020.03.04 |