Giter VIP home page Giter VIP logo

tictactoe's Introduction

TicTacToe

MEGA-Z_GAME

๐Ÿ™‚ Learnning Point

  • ๊ฐ์ฒด์ง€ํ–ฅ์— ๋Œ€ํ•˜์—ฌ ์ƒ๊ฐํ•ด๋ด…๋‹ˆ๋‹ค.
  • ์งง๊ฒŒ ํ”Œ๋ ˆ์ด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒŒ์ž„์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ด…๋‹ˆ๋‹ค.
  • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ”Œ๋ ˆ์ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒŒ์ž„์˜ ๊ทœ๊ฒฉ์„ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”– Commit Convention

Tag Description
Init ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ƒ์„ฑ ํ›„ ์ตœ์ดˆ์˜ ์ปค๋ฐ‹
Create .java ํŒŒ์ผ ๋ฐ ์ƒˆ๋กœ์šด class ์ƒ์„ฑ
Feat ๊ธฐ๋Šฅ ๊ตฌํ˜„์‹œ
Mod ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •
Fix ๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ์˜ ๋ฒ„๊ทธ ๋ฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ์ˆ˜์ • ์™„๋ฃŒ
Refactor ๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ๋ณ€ํ™” ์—†์ด ๋” ํšจ์œจ ์ข‹์€ ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝ
Test ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€ํ›„ ๋™์ž‘ํ™•์ธ ๋ฐ ์ˆ˜์ •(ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ์ˆ˜์ • X)
Docs README.md์™€ ๊ฐ™์€ ๋ฌธ์„œ ์ˆ˜์ •
Style ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์—†์ด ์ฝ”๋“œ ํฌ๋ฉงํŒ…, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ์—๋Œ€ํ•œ ์ˆ˜์ •(ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ์ˆ˜์ • X)
Chore ๋นŒ๋“œ ์„ค์ •, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์„ค์ •(ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ์ˆ˜์ • X)
Remove ํŒŒ์ผ ์‚ญ์ œ
Rename ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช…์„ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ
์ปค๋ฐ‹ ํฌ๋งท
Tag : ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€

ex)
$ git commit -m"Feat : TicTacToe ์Šน๋ฆฌ ์กฐ๊ฑด ์ฒดํฌ"
  • Tag์˜ ์•ž๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Tag๋ฅผ ๊ธฐ์ž…ํ›„ ํ•œ์นธ์˜ ๊ณต๋ฐฑํ›„ :์„ ๊ธฐ์ž…ํ•˜๊ณ  ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ•œ ์นธ์˜ ๊ณต๋ฐฑ์„ ๊ธฐ์ž…ํ•˜๊ณ  ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
    ex) Style : {์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€}
  • ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” ๋˜๋„๋ก ์ƒ์„ธํ•˜๊ฒŒ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • โ—โ— ๊ฐ์ž์˜ fork๋ฐ›์€ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ž‘์—… ํ›„ main ๋ธŒ๋žœ์น˜๋กœ mergeํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ fork๋ฐ›์€ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ Sync Forkํ›„์•  git pull origin main๋ช…๋ น์–ด๋กœ pull์„ ๋ฐ›์•„์ฃผ์„ธ์š”.

git ๋ช…๋ น์–ด ์ฐธ๊ณ 


๐ŸŽจ GameUtil ํด๋ž˜์Šค

GameUtil ํด๋ž˜์Šค๋Š” ๊ฐ๊ฐ์˜ ๊ฒŒ์ž„ ๋ชจ๋“ˆ ์ œ์ž‘์‹œ์— ํŽธ์˜์„ฑ์„ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

1. colorFont()

public static String fontColor(String color, String words) {
    return colorList.get(color) + words + "\u001B[0m";
}

colorFont()๋Š” ๊ฒŒ์ž„๋ชจ๋“ˆ ์ œ์ž‘์‹œ ์ฝ˜์†”์ฐฝ์— ํฐํŠธ์ƒ‰์„ ๋ณ€๊ฒฝ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

fontColor({String : ์ƒ‰}, {String : ๋ฌธ์ž});

ex)
fontColor("red", "X")
image

์ด๋ฏธ์ง€์™€ ๊ฐ™์ด "X"๊ฐ€ "red"๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์ง€์› ํ•˜๋Š” ํฐํŠธ ์ƒ‰์ƒ
  • black
  • red
  • green
  • yellow
  • blue
  • purple
  • cyan
  • white

2. waitSecond()

waitSecond()๋Š” Thread๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ "์ดˆ"(second)๋‹จ์œ„๋กœ "์ง€์—ฐ"(delay)์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. waitSecond()๋Š” ๊ฒŒ์ž„ ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ์˜ˆ์™ธ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  "์ง€์—ฐ"(delay)์„ ์ฃผ๊ณ ์ž ํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

ex)
    private void ready() {
        int count = 3;
        waitSecond();                      // 1์ดˆ ์ง€์—ฐ
        for (int i = count; i > 0; i--) {
            System.out.println(i + "!");
            waitSecond();                  // 1์ดˆ ์ง€์—ฐ
        }
        System.out.println("Battle!");
        waitSecond();                      // 1์ดˆ ์ง€์—ฐ
    }

๐Ÿงฑ TicTacToe ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ๊ตฌ์„ฑ

TicTacToe๋Š” ๋‹จ์ˆœํžˆ ์ž๋ฐ”๊ฐ€์ง€๊ณ  ์งง์€ ๊ฒŒ์ž„์„ ๋งŒ๋“ค๋‹ค๊ฐ€ ๋‹ค๋ฅธ ๊ฒŒ์ž„๋„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™•์žฅ์„ฑ์„ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ GameManager๋กœ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

src

manager ํŒจํ‚ค์ง€

GameLauncher : Playable ํƒ€์ž…๋งŒ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. GameManager๊ฐ€ ์‹คํ–‰ ์‹œ ์„ ํƒํ•œ ๊ฒŒ์ž„์„ ์‹คํ–‰ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
GameList : ๋งŒ๋“  ๊ฒŒ์ž„์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. GameList๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ GameManager ์„ ํƒ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
GameManager : ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์‹œ ์ž๋™์œผ๋กœ ํ•œ ๋ฒˆ๋งŒ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ UI์™€ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

module ํŒจํ‚ค์ง€

Playable : GameLauncher๊ฐ€ ๊ฒŒ์ž„์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Playable ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
TicTacToe : TicTacToe ๊ฒŒ์ž„์˜ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽพ ๊ฒŒ์ž„ ๊ทœ์น™

1.1 TicTacToe

๋‘ ๋ช…์ด ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉฐ O์™€ X๋ฅผ 3X3ํŒ์— ์จ์„œ ๊ฐ€๋กœ, ์„ธ๋กœ, ๋Œ€๊ฐ์„  ์ƒ์— ๋†“์ด๋„๋ก ํ•˜๋Š” ๋†€์ด์ž…๋‹ˆ๋‹ค.
ํŒ์— ์ ํžŒ ์ขŒํ‘œ๊ฐ’์„ ์ŠคํŽ˜์ด์Šค๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅํ•˜๋ฉด O, X๋ฅผ ํ‘œ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-06-02 แ„‹แ…ฉแ„’แ…ฎ 5 43 25
image

1.2 TicTacToe Infinite Mode

๋ฌดํ•œ๋ชจ๋“œ TicTacToe๋Š” ๊ธฐ์กด ๊ฒŒ์ž„ ๊ทœ์น™์— 3๊ฐœ์˜ O์™€ X๋ฅผ ์œ ์ง€ํ•˜๊ฒŒ๋˜๋ฉฐ, 3๊ฐœ๊ฐ€ ๋„˜์–ด๊ฐ€๋ฉด ๊ฐ€์žฅ ๋‚˜์ค‘์— ์ž…๋ ฅ๋œ O์™€ X๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๊ทœ์น™์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
image image image

2. Hanoi

Aํƒ€์›Œ์— ์žˆ๋Š” ์›๋ฐ˜์„ ์ „๋ถ€ Cํƒ€์›Œ๋กœ ์˜ฎ๊ธฐ๋ฉด ์ด๊ธฐ๋Š” ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค.
์ž…๋ ฅ ์˜ˆ์‹œ๋Š” A B ๋˜๋Š” a b ์˜ฎ๊ธธ ํ˜„์žฌ ์œ„์น˜์—์„œ, ์˜ฎ๊ฒจ์งˆ ์œ„์น˜๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.
Hanoi_start
Hanoi_win
์˜ค๋ชฉ์€ ๋‘ ๋ช…์˜ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ๋ฐ”๋‘‘ํŒ ์œ„์— ๋Œ์„ ๋†“๋Š” ๋ณด๋“œ ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค.
๊ฒŒ์ž„์˜ ๋ชฉํ‘œ๋Š” ๊ฐ€๋กœ, ์„ธ๋กœ ๋˜๋Š” ๋Œ€๊ฐ์„ ์œผ๋กœ ๋‹ค์„ฏ ๊ฐœ์˜ ๋Œ์„ ์—ฐ์†์œผ๋กœ ๋†“๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ˜„์žฌ ์–ด๋– ํ•œ ๋ฃฐ๋„ ์—†๋Š” 1๋ฒˆ ๋ชจ๋“œ๋งŒ ๊ตฌํ˜„์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”ํ›„์— OOP ์ ์œผ๋กœ ํ™•์žฅํ•˜์—ฌ ์ผ๋ฐ˜๋ฃฐ๊ณผ ๋ Œ์ฃผ๋ฃฐ์ด ์ ์šฉ๋œ ์˜ค๋ชฉ์„ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
Untitled (5) Untitled (6)

tictactoe's People

Contributors

olivelover avatar andle7 avatar sora0319 avatar alfn051 avatar wqerwr avatar jihyeok47 avatar

Watchers

 avatar

tictactoe's Issues

Repository name issue

๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์ด ์•„์ง๋„ ํ‹ฑํƒํ† ์ธ๊ฑฐ ์กฐ๊ธˆ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค...

Make Snake Game

  • java jline.jar setting
  • java terminal control
  • make snake game

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.