반응형

👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
시작하기 전
오늘은 어제 배운 내용을 복습하고 작은 미션도 하기로 하였다
어제 배운 내용 복습
1. 클래스
2. 메서드
1. 사용하는 이유 : 기능을 정의한다
2. 장점 : 코드의 재사용성이 높다, 유지보수가 수월하다, 업그레이드가 수월하다
3. 주의점 : **단일 책임의 원칙**을 사용한다(개발자의 주관적인 판단이 높다)
1. 단일책임 원칙 : 한가지 메서드는 1가지 기능을 사용하게 한다
2. 코드의 재사용성을 높힌다 : 정의한 후 여러 번 호출해서 사용하는 것
3. 변수(원시변수:실제값저장, 참조변수:실제값주소-실제값은 Heep Area저장)
4. 생성자 : 객체생성시 딱1번 호출된다, 재호출 불가하다
멤버변수/지역변수
우리가 짜는 코드는 실행 하기 전 하드 디스크에 있다
런을 할 경우 메모리에 올라가며 그때 실행된다.
> 실행시 Code Area에 만든 코드를 이동시켜 코드를 진행한다
1. 멤버변수 : 사용범위 > 해당 클래스 내
2. 지역변수 : 사용범위 > 선언된 블록 내
public class 클래스이름 {
// 멤버 변수 선언
// 멤버 변수 선언
public void 메서드(){
- 기능 -
}
}
메서드 호출 시 호출된 메서드 처리 후 호출 위치로 리턴
코드 실행 시 스레드에서 코드 전체를 해석한다
미니 프로젝트
주제 : 누가누가 단어블록을 깨는가? |
2차원 배열 : 4x3이 있다. (변경가능) 2차원 배열에는 영어단어가 있다. 배열의 하나의 값이 영어단어 블록이라고 한다. 키보드로 영어 단어를 입력하여 영어단어 블록을 부순다. 부숴진 자리에는 빈 공간이나 넣고싶은 특수문자를 넣는다 영어단어가 중복될 경우 한 번에 여러개의 단어를 부술 수 있다. 엔터를 누르면 게임이 시작되고 중간에 q를 누르면 게임이 종료되고 모든 블록이 다 부숴지면 게임이 자동종료된다. 중간에 q를 누르면 부순 블록의 갯수를 출력하고 모든 블록이 다 부숴져서 종료되면 걸린 시간을 계산하다. 시간은 측정은 다음 블로그를 참고하세요 https://hijuworld.tistory.com/2 2차원 배열과 변수 메서드 ..클래스는 1개 선에서 다름 게임을 창작해도 됩니다. 어제 소스를 복습할 경우는 2차원 배열이 아닌 1차원 배열을 사용해도 됩니다. 필수 구형 기능 소스 생성자, 단어입력 메서드, 게임하기 메서드, 단어출력메서드 |
package block;
public class Main {
public static void main(String[] args) {
new Exe();
}
}
package block;
import java.util.Random;
import java.util.Scanner;
public class Exe {
// 전역변수
String[] engArr = {"January", "February", "March", "April", "May", "June", "July", "Aug", "September", "October", "November", "December"};
Scanner in = new Scanner(System.in);
Random r = new Random();
String[][] border = new String[4][5];
int cnt = 0;
// 생성자
public Exe() {
info();
in.nextLine();
long startTime = System.currentTimeMillis();
CreateBorder();
while (cnt < 20) {
cnt += play();
if (cnt < 20 ) System.out.println("\n\t\t\t\t⚐ 현재 스코어 : " + cnt + "/" + 20 + "\n ");
else if ( cnt > 20 ) System.out.println("\t\t\t\t⚐ 사용자 요청으로 종료합니다 ");
}
long stopTime = System.currentTimeMillis();
System.out.println("\n\t\t\t\t⚐ 플레이 시간 : " + (stopTime-startTime)/1000 + "초");
}
// 사용자 입력후 일치되는 문자 확인후 반환 메서드
private int play() {
String userIn = "";
int cnt = 0;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
String tmp = String.format("✧ %-20s", border[i][j]);
System.out.print(tmp);
}
System.out.println();
}
System.out.println("_________________________________________________________________________________________");
System.out.print(" ☞ ☞ Player : ");
userIn = in.nextLine().toLowerCase();
if (!(userIn.equals("q"))) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
if (border[i][j].toLowerCase().equals(userIn)) {
border[i][j] = "✧";
cnt++;
}
}
}
} else if (userIn.equals("q")) {
cnt += 100;
}
return cnt;
}
// Boder판 생성
public void CreateBorder() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
border[i][j] = engArr[r.nextInt(engArr.length - 1)];
}
}
}
public void info() {
System.out.println("게임 시작 - Enter");
System.out.println("중도 탈출 시 Q 입력");
System.out.println("시작시 나오는 영단어를 모두다 깨야 탈출 , 입력하여 깨진 영단어는 * 로 바뀝니다. \n나오는모든 영단어를 모두 삭제시 게임종료 ");
}
}
반응형
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Jᴀᴠᴀ' 카테고리의 다른 글
2023/10/23✨ 클래스 (0) | 2023.10.31 |
---|---|
2023/10/20 ⭐️ 조별미션 - 즐겨봐요 게임의숲 (1) | 2023.10.20 |
2023/10/18👋 클래스/메소드/생성자/변수 (1) | 2023.10.18 |
2023/10/17✅ 2차원배열 문제 (0) | 2023.10.18 |
2023/10/16✏️ 2차원 배열 (1) | 2023.10.18 |