JAVA - Thread 달팽이 경주 게임

 

스레드와 친해지기 위해 달팽이 경주 게임을 만들어봤어요.

랜덤으로 가져온 달팽이의 스피드에 따라 각 달팽이 배열에 게이지를 추가하는 스레드와

판을 보여주는 스레드

사용한 스레드는 총 4개입니다.

 

게임을 시작했을 때

 

 

 

쭉쭉쭉 골인 지점까지 가는 중..

 

 

달팽이2가 먼저 골인 지점에 도착했네요!

 

전체 소스코드>>

package d20230508;

import java.util.Random;

class show implements Runnable {
	@Override
	public void run() {
		while (true) {
			if (RunSnail.board[0][20] != null || RunSnail.board[1][20] != null || RunSnail.board[2][20] != null) {
				RunSnail.showflag = false;
				if (RunSnail.board[0][20] != null) {
					System.out.println(RunSnail.board[0][0] + "승리!!");
				}
				if (RunSnail.board[1][20] != null) {
					System.out.println(RunSnail.board[1][0] + "승리!!");
				}
				if (RunSnail.board[2][20] != null) {
					System.out.println(RunSnail.board[2][0] + "승리!!");
				}
				return;
			}
			for (int k = 1; k < 10; k++) {
				for (int n = 0; n < 80; n++) {
					System.out.println();
				}
				System.out.println("\t\t    골인지점>>|");
				for (int i = 0; i < 3; i++) {
					for (int j = 0; j < 21; j++) {
						if (RunSnail.board[i][j] != null) {
							System.out.print(RunSnail.board[i][j]);
						}
					}
					System.out.println("♥");
					System.out.println();
				}
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}

	}
}

class RunSnail implements Runnable {
	static String board[][] = new String[3][21];
	static boolean showflag = true;
	int y;
	int x;
	int speed;

	public RunSnail(int y, String name, int speed) {
		this.y = y;
		this.x = 1;
		board[y][0] = name + " ";
		this.speed = speed;
	}

	@Override
	public void run() {
		System.out.print(board[y][0] + ":");
		for (int i = 1; i < 21; i++) {
			if (!showflag) {
				return;
			}
			try {
				board[y][i] = "-";
				Thread.sleep(speed);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

}

public class Snail {
	public static void main(String[] args) {
		Random rd = new Random();
		String name1 = "달팽이1";
		int speed1 = 500 + rd.nextInt(500);
		String name2 = "달팽이2";
		int speed2 = 500 + rd.nextInt(500);
		String name3 = "달팽이3";
		int speed3 = 500 + rd.nextInt(500);
		Thread s1 = new Thread(new RunSnail(0, name1, speed1));
		Thread s2 = new Thread(new RunSnail(1, name2, speed2));
		Thread s3 = new Thread(new RunSnail(2, name3, speed3));
		Thread show = new Thread(new show());

		s1.start();
		s2.start();
		s3.start();
		show.start();

	}

}

 

'Java > Basic' 카테고리의 다른 글

JSP+Servlet Ajax 사용하기  (0) 2025.02.24
Java - Socket+Thread 실시간 채팅방  (0) 2025.02.22
Java - JDBC 학생관리프로그램  (0) 2025.02.22
Java - JDBC 소코반 게임  (1) 2025.02.22
Java - JDBC CRUD 게시판 만들기 + 로그관리  (1) 2025.02.22