자세히보기

IT/Programming

[Java] 겜블링 및 자바슬롯머신

COMDORI 2020. 3. 4. 19:03
728x90
반응형

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번 입니다.

 

 

 

컴돌이블로그

#자바

728x90
반응형