Java 응용 10

Java 응용 (10. GUI기반 자바 타자 연습 게임)

“성적이나 결과는 행동이 아니라 습관입니다.”  아리스토텔레스 자바 SWING을 이용하여 이전의 타자 연습게임을 GUI와 함께 보완import java.awt.*;import java.awt.event.*;import java.util.Random;import javax.swing.*;import javax.swing.text.*;class TypingGameGUI extends JFrame { private String[] sentences; private Random random; private JTextPane textPane; private JLabel promptLabel; private JLabel timeLabel; private JLabel accuracyL..

Java 응용 2024.06.15

Java 응용 (9. Echo Server / Client)

1. 클라이언트가 서버로 메시지를 보낼 수 있는 환경을 구축 2. 포트번호는 개인의 환경에 맞추어 바꾸어 주면 됨 3. Server Code와 Client Code를 같은 패키지 안에 넣어주는 것을 권장 Server Code package server_test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class EchoServer { private final ServerSocket serverSocket; public Ec..

Java 응용 2024.04.12

Java 응용 (8. 끝말잇기 게임)

n명의 플레이어가 끝말잇기 게임에 참여한다. 참가자 이름은 사용자가 설정 할 수 있게 한다. 첫 번째 단어는 아버지로 고정한다. 틀리는 사람이 나올 경우 게임을 종료한다. 누가 틀렸는지 출력한다. Code1 import java.util.Scanner; public class EndGame { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("참가자 수를 입력하세요: "); int n = sc.nextInt(); String[] names = new String[n]; for (int i = 0; i < n; i++) { System.out.print((i + 1) + "번째 참가자 ..

Java 응용 2024.04.11

Java 응용 (7. Thread를 이용한 경마 게임)

“탁월함은 기술이 아니다. 태도입니다.” – 랄프 마스턴 사용자로부터 경주마 개수를 입력받고 입력받은 개수만큼 독립적으로 경주마는 움직인다. 각 경주마는 경기장을 10바퀴 도는데 한번 돌때마다 10m씩 이동한다. 한번 돌때마다 이동한 거리 출력해야하며, 100m가 되었을 때 결승선이 통과된다. 1. 사용자의 입력으로 경주마의 마릿수를 받고 2. 입력 받은 마릿수만큼 스레드를 생성하고 3. 생성된 스레드의 RUN 블럭에 반복분(10번)을 수행 Code 1 import java.util.Scanner; public class HorseRun extends Thread { private int horseId; public HorseRun(int horseId) { this.horseId = horseId; }..

Java 응용 2024.04.08

Java 응용 (6. 랜덤한 숫자 맞추기)

“진짜 어려움은 극복할 수 있습니다. 정복할 수 없는 것은 상상 속의 것들뿐이다.” – 시어도어 N. 베일 랜덤한 숫자 하나를 맞추는 게임을 제작 1~100까지의 범위 중 하나의 랜덤한 숫자가 생성된다. 만약 입력한 숫자가 랜덤한 숫자보다 작으면 "더 큰 숫자를 입력해주세요" 라고 출력, 입력한 숫자가 랜덤한 숫자보다 크면 "더 작은 숫자를 입력해주세요"를 출력 10번의 시도를 준다 게임이 종료되고 계속하고 싶으면 y, 종료하고 싶으면 n 을 입력하게 한다. Code import java.util.Random; import java.util.Scanner; public class RandomNumberGame { public static void main(String[] args) { Random ran..

Java 응용 2024.04.08

Java 응용 (5. 이메일 검색 서비스)

“훌륭한 사람은 레이저 같은 집중력을 가진 평범한 사람입니다.” – 브루스 리 검색 서비스를 구현해보자 사용자로부터 email을 입력받으면 서비스를 통해 사용자를 검색하고 입력된 사용자의 정보를 출력해보는 프로그램 사용자 정보는 이름과 이메일을 포함하고, 필수적인 정보는 이메일이다. 이름이 없는 경우 no name으로 표기된다. 사용자 정보는 기존 db에 5건이 저장되어 있으며, 추가 사용자를 등록시 중복된 이메일이 온다면 db에 저장되지 않는다. Customer import java.util.Objects; public class Customer { String name; String email; public Customer(String name, String email){ this.email = em..

Java 응용 2024.03.14

Java 응용 (4. 숫자 위치 맞추기)

1에서 9까지 난수 3개를 발생하고 (중복허용안됨) 사용자로부터 1에서 9사이의 정수 3개를 입력 받는다. 같은 위치에 같은 숫자면 PASS, 위치는 다르지만 숫자가 같으면 FAIL 일 때 PASS 와 FAIL의 총 카운트를 출력하시오 ex) 컴퓨터의 난수가 1, 3, 5 라면 case 1 : 사용자의 입력이 1 5 9 라면 1 PASS | 1 FAIL 출력 case 2 : 사용자의 입력이 3 5 9 라면 0 PASS | 2 FAIL 출력 [코딩순서] 1. 난수 3개 발생 2. 중복 제거 3. 사용자 입력 4. PASS, FAIL 로직 같은 포지션이면 PASS com[i] == user[i] 그 외 FAIL com[1] = user[2] Code import java.util.Scanner; public..

Java 응용 2024.03.06

Java 응용 (3. 로또 번호 추첨하기)

로또 번호 6개를 출력해보자 1. 범위는 1 ~ 45 까지 랜덤으로 번호를 생성 2. 생성된 번호를 배열에 저장 3. 중복 저장이 되지 않도록 한다. 4. 배열에 저장된 6개의 번호를 출력 첫 번째 방법 public class LottoRandom { public static void main(String[] args) { int[] lotto = new int[6]; for(int i = 0; i < 6; i++){ var randNum = (int)(Math.random()*45) + 1; var checkFlag = false; for(int j = 0; j < 6; j++){ if(lotto[j]==randNum){ checkFlag = true; i--; break; } } if(!checkFl..

Java 응용 2024.03.05

Java 응용 (2. 타자 연습 게임)

타자 연습 게임을 만들어보자 3개의 문장을 배열에 저장하고, 각 문장을 보여주고 사용자가 해당 문장을 입력하고 각 문장별 정확도와 타자시간을 출력해보자 정확도 = (맞춘 글자수 / 총 글자수) * 100 1. 배열에다가 문장을 추가 2. 사전에 저장된 문장을 하나씩 출력한다. 3. 출력된 문장과 같은 사용자의 입력을 받는다. 4. 입력 받은 문장과 배열에 저장된 문장을 검증 public class PracticeGame { public static void main(String[] args) { String[] sentences = new String[3]; sentences[0] = "안녕하세요"; sentences[1] = "나는 누구 입니다"; sentences[2] = "안녕히 가세요"; Syst..

Java 응용 2024.03.04

Java 응용 (1. 가위바위보 게임)

가위 (1), 바위 (2), 보 (3)게임을 만들어보자 게임 후 전적표시 (승리, 무승부, 패배) 게임 후 사용자로부터 한 게임 더 혹은 종료메뉴를 보여주고 한 게임 더를 선택시 전적이 계속 누적되어야함 1~3까지 랜덤으로 숫자하나를 생성하고, 사용자로 부터 숫자하나를 입력 받아 게임을 진행 import java.util.Random; import java.util.Scanner; public class RockScissorPaper { public static void main(String[] args) { Random random = new Random(); Scanner sc = new Scanner(System.in); while (true) { var target = random.nextInt(..

Java 응용 2024.03.04