[25.07.04 TIL] ๊ฐœ์ธ ๊ณผ์ œ

๊น€์˜๋ฏผยท2025๋…„ 7์›” 4์ผ

๐ŸŽฏ ์˜ค๋Š˜์€ ์•„์นจ์— ์ฝ”๋”ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ํ›„ ๊ณผ์ œ ์ œ์ถœ๊นŒ์ง€ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๋‚จ์•„ ๋„์ „ ๊ณผ์ œ๊นŒ์ง€ ์™„๋ฃŒํ–ˆ๋‹ค.
์˜คํ›„์—๋Š” ๊ณผ์ œ ํ’€์ด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ , ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์™€ ๊ณผ์ œ๋ฅผ ๋ณต์Šตํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.


โฐ ์•„์นจ์— ์ฝ”๋”ฉ

โœ… 0 ์ด๋™์‹œํ‚ค๊ธฐ 1

void main() {
  var list = [];
  for (var i = 0; i < list.length; i++) {
    if (list[i] != 0) {
      for(var j = 0; j < list.length; j++) {
        if (list[j] == 0) {
          var change = list[i];
          list[i] = list[j];
          list[j] = change;
        }
      }
    }
  }
  print("$list");
}

๐Ÿ’ฌ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ˆซ์ž๊ฐ€ 0์ด ์•„๋‹๋•Œ, 0์„ ์ฐพ์•„์„œ ์œ„์น˜๋ฅผ ์˜ฎ๊ฒจ์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.


โœ… 0 ์ด๋™์‹œํ‚ค๊ธฐ 2

void main() {
  var list = [1, 0, 2, 0, 0, 2];
  var index = [];
  for (var i = 0; i < list.length; i++) {
    if (list[i] == 0) {
      index.add(i);
    }
  }
  for (var j = 0; j < index.length; j++) {
      list.removeAt(index[index.length - j -1]);
      list.add(0);
  }
  print("$list");
}

๐Ÿ’ฌ ์ด ๋ฐฉ๋ฒ•์€ ์šฐ์„  ๊ฐ’์ด 0์ธ ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•ด์„œ ๊ทธ ์œ„์น˜์˜ ๋ฐฐ์—ด์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ญ์ œํ•œ ๋งŒํผ ๋ฆฌ์ŠคํŠธ์— 0์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.


๐Ÿ‘‰ ๋‹ค๋ฅธ ์ฝ”๋“œ 1

void moveZeroes(List<int> nums) {
  int lastNonZeroIndex = 0;  
  // [0, 1, 0, 3, 12] index : 0, i : 0
  // i: 1, nums : [1, 1, 0, 3, 12], index: 1
  // i : 2, 
  // i: 3, [1, 3, 0, 3, 12], index: 2
  // i: 4, [1, 3, 12, 3, 12], index: 3
  // ๋ชจ๋“  ๋น„-0 ์š”์†Œ๋ฅผ ๋ฐฐ์—ด์˜ ์•ž๋ถ€๋ถ„์œผ๋กœ ์ด๋™
  for (int i = 0; i < nums.length; i++) {
    if (nums[i] != 0) {
      nums[lastNonZeroIndex] = nums[i];
      lastNonZeroIndex++;
    }
  }
	 // [1,3,12,3,12]	 
	 // i: 4, [1, 3, 12, 0, 0], index: 3
  // ๋‚˜๋จธ์ง€ ์š”์†Œ๋ฅผ 0์œผ๋กœ ์„ค์ •
  for (int i = lastNonZeroIndex; i < nums.length; i++) {
    nums[i] = 0;
  }
  // [1,3,12,0,0]
}

๐Ÿ‘‰ ๋‹ค๋ฅธ ์ฝ”๋“œ 2

void moveZeroes(List<int> nums) {
  if (nums.length < 2) return;
  int length = nums.length;
  List<int> zeroIndex = [];
//
  for (int i = 0; i < length; i++) {
    if (nums[i] == 0) {
      zeroIndex.add(i);
    }
  }
  for (int i = 0; i < zeroIndex.length; i++) {
    nums.removeAt(zeroIndex[i] - i);
    nums.add(0);
  }
  return;
}

๐Ÿ‘‰ ๋‹ค๋ฅธ ์ฝ”๋“œ 3

void moveZeroes(List<int> nums) {
  int originalLength = nums.length;
  nums.removeWhere((x) => x == 0);
  int zerosToAdd = originalLength - nums.length;
  nums.addAll(List.filled(zerosToAdd, 0));
}

๐Ÿ‘‰ ๋‹ค๋ฅธ ์ฝ”๋“œ 4

void moveZeroes(List<int> nums) {
  int lastNonZero = 0;
  for (int i = 0; i < nums.length; i++) {
    if (nums[i] != 0) {
      int temp = nums[i];
      nums[i] = nums[lastNonZero];
      nums[lastNonZero] = temp;
      lastNonZero++;
    }
  }
}

๐Ÿ’ญ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๋ณด๋‹ˆ ์ด๋ ‡๊ฒŒ ๋‹ค์–‘ํ•œ ํ•ด๊ฒฐ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฑธ ์•Œ๊ฒŒ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
ํ•ด์„คํ•ด์ฃผ์‹  ๋‚ด์šฉ์ด๋‚˜ ์ฝ”๋“œ๋“ค๋„ ํ™•์ธํ•˜๋ฉด์„œ ์ž˜ ์ดํ•ดํ•˜๋„๋ก ๋ณต์Šตํ•˜๋Š”๊ฒŒ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋ž˜์•ผ ๋‹ค์Œ์—๋„ ์œ ์—ฐํ•œ ์‚ฌ๊ณ ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ๋‹ค์–‘ํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ์‹ถ๋‹ค.


๐Ÿฅฝ ๊ฐœ์ธ ๊ณผ์ œ

๐Ÿ‘ฉโ€๐Ÿ’ป ๋„์ „ ๊ธฐ๋Šฅ

๐Ÿ“Œ ์บ๋ฆญํ„ฐ ์ฒด๋ ฅ ์ฆ๊ฐ€ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
๐Ÿ“ character.dart

if (Random().nextInt(10) <= 2) {
      character.hp += 10;
      print("๋ณด๋„ˆ์Šค ์ฒด๋ ฅ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค! ํ˜„์žฌ ์ฒด๋ ฅ: ${character.hp}");
}

๐Ÿ’ฌ Random() ์„ ์‚ฌ์šฉํ•˜์—ฌ 30%์˜ ํ™•๋ฅ ๋กœ ์ถ”๊ฐ€ ์ฒด๋ ฅ์„ ์ฃผ๋Š”๋ฐ nextInt(10)์˜ ๊ฒฝ์šฐ 0~9 ๊นŒ์ง€๋ผ์„œ ๋•Œ๋ฌธ์— <=2 ๋กœ ์„ค์ •ํ•˜์˜€๋‹ค.


๐Ÿ“Œ ์บ๋ฆญํ„ฐ ์•„์ดํ…œ ์‚ฌ์šฉ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
๐Ÿ“ character.dart

class Character extends Utils {
	bool hasItem = true;
	bool usingItem = false;
.
.
// ์บ๋ฆญํ„ฐ ๊ณต๊ฒฉ ๋กœ์ง
  void attackMonster(Monster monster) {
    var realAttack = attack;
    if (usingItem) {
      realAttack *= 2;
    }
    print("$name์ด(๊ฐ€) ${monster.name}์—๊ฒŒ $realAttack์˜ ๋ฐ๋ฏธ์ง€๋ฅผ ์ž…ํ˜”์Šต๋‹ˆ๋‹ค.\n");
    monster.hp -= (realAttack - monster.defense);
  }
}

๐Ÿ’ฌ ์šฐ์„  ์•„์ดํ…œ์˜ 1ํšŒ์„ฑ ์‚ฌ์šฉ์„ ์œ„ํ•ด hasItem ์•„์ดํ…œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ, usingItem ์ง€๊ธˆ ์•„์ดํ…œ์„ ์‚ฌ์šฉํ•œ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ณต๊ฒฉ๋ ฅ์€ 1ํšŒ์„ฑ์œผ๋กœ ์ฆ๊ฐ€ํ•ด์•ผ๋˜๊ธฐ ๋•Œ๋ฌธ์— var realAttack = attack; ์„ ์„ ์–ธํ•˜์—ฌ, ์•„์ดํ…œ์„ ์‚ฌ์šฉํ•œ ์ƒํƒœ์ผ ๊ฒฝ์šฐ 2๋ฐฐ๋กœ ํ•˜์—ฌ ๋ฐ๋ฏธ์ง€๋ฅผ ์ฃผ๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค.


๐Ÿ“ game.dart

print("ํ–‰๋™์„ ์„ ํƒํ•˜์„ธ์š” (1: ๊ณต๊ฒฉ, 2: ๋ฐฉ์–ด, 3: ์•„์ดํ…œ ์‚ฌ์šฉ) : ");
.
.
	else if (action == "3") {
        if (character.hasItem) {
          character.hasItem = false;
          character.usingItem = true;
          print("์•„์ดํ…œ์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค!");
          continue;
        } else {
          print("์ด๋ฏธ ์‚ฌ์šฉํ•œ ์•„์ดํ…œ์ž…๋‹ˆ๋‹ค.");
          continue;
        }
     .
     .
   character.usingItem = false;

๐Ÿ’ฌ ํ–‰๋™ ์„ ํƒ์ง€๋ฅผ ๋Š˜๋ ธ๋Š”๋ฐ 3๋ฒˆ ์•„์ดํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉด ์šฐ์„  1ํšŒ์„ฑ ์•„์ดํ…œ์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ , ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์•„์ดํ…œ ์—†์Œ ์ฒ˜๋ฆฌ์™€ ํ•จ๊ป˜ ์•„์ดํ…œ ์‚ฌ์šฉ ์ƒํƒœ๋กœ ๋ฐ”๊พผ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•„์ดํ…œ์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ํ–‰๋™์„ ์„ ํƒํ•˜๋„๋ก ํ•˜๊ณ , ๋งŒ์•ฝ ์•„์ดํ…œ์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ๋‹ค์‹œ ์ž…๋ ฅํ•œ๋‹ค๋ฉด ์•„์ดํ…œ์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•œ๋‹ค.

๐Ÿ’ฌ ์•„์ดํ…œ ์‚ฌ์šฉ ์‹œ ํ„ด์€ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š”๋ฐ, ๊ณต๊ฒฉ๋ ฅ 2๋ฐฐ ์•„์ดํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ , ์ƒ๋Œ€ํ„ด ํ›„์— ๋‚ด๊ฐ€ ๊ณต๊ฒฉํ•  ๊ฒฝ์šฐ ๊ทธ๋ƒฅ ์•„์ดํ…œ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ณต๊ฒฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋ฐ๋ฏธ์ง€๊ฐ€ ๊ฐ™๋‹ค.

๊ทธ๋ž˜์„œ ์•„์ดํ…œ ๋ฉ”๋ฆฌํŠธ๋ฅผ ์œ„ํ•ด ํ„ด์ด ๋„˜์–ด๊ฐ€์ง€ ์•Š๋„๋ก ์„ค์ •ํ–ˆ๊ณ , ์‹ค์ˆ˜๋กœ ์•„์ดํ…œ ์‚ฌ์šฉ์—ฌ๋ถ€๋ฅผ ๋ชฐ๋ผ์„œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ž…๋ ฅํ•ด๋„ ํ„ด์ด ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ณ , ์•„์ดํ…œ๋„ ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š๋„๋ก ํ–ˆ๋‹ค.

์•„์ดํ…œ์€ ํ•œํ„ด๋™์•ˆ ์ง€์†๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ˆ˜๋กœ ์•„์ดํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ณต๊ฒฉ์„ ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์•„์ดํ…œ ์‚ฌ์šฉ๊ณผ ํ•จ๊ป˜ ํ•œํ„ด์ด ์ง€๋‚˜๋ฉด ์•„์ดํ…œ ๋ฒ„ํ”„๊ฐ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.


๐Ÿ“Œ ๋ชฌ์Šคํ„ฐ ๋ฐฉ์–ด๋ ฅ ์ฆ๊ฐ€ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
๐Ÿ“ game.dart

	var counter = 0;
	.
	.
/// 3ํ„ด๋งˆ๋‹ค ๋ฐฉ์–ด๋ ฅ ์ฆ๊ฐ€
      counter++;
      if (counter == 3) {
        counter = 0;
        monster.defense += 2;
        print('${monster.name}์˜ ๋ฐฉ์–ด๋ ฅ์ด ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค! ํ˜„์žฌ ๋ฐฉ์–ด๋ ฅ: ${monster.defense}');
      }

๐Ÿ’ฌ ์šฐ์„  3ํ„ด๋งˆ๋‹ค ์ฆ๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด counter ๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ํ„ด์„ ์„ธ๊ณ , 3ํ„ด์ด ๋˜๋ฉด ์นด์šดํŠธ๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™”์‹œํ‚ค๊ณ  ๋ชฌ์Šคํ„ฐ์˜ ๋ฐฉ์–ด๋ ฅ์€ 2๋งŒํผ ์ฆ๊ฐ€ํ•˜๊ฒŒ ํ•œ๋‹ค.

์ด๋ถ€๋ถ„์€ ์บ๋ฆญํ„ฐ ๋ฐฉ์–ด ๋ฉ”์„œ๋“œ์ฒ˜๋Ÿผ ๋ชฌ์Šคํ„ฐ ๋ฐฉ์–ด ๋ฉ”์„œ๋“œ๋กœ ํ• ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์šฐ์„  ์นด์šดํŠธ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ์ด ๋ณ€์ˆ˜๋Š” ํ„ด๋งˆ๋‹ค ์ฆ๊ฐ€ํ•ด์•ผ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ–์— ์กด์žฌํ•ด์•ผํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชฌ์Šคํ„ฐ ๋ฐฉ์–ด๋ ฅ ์ฆ๊ฐ€๋Š” ํฌ๊ฒŒ ๋ณต์žกํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฒŒ์ž„์˜ ํ๋ฆ„ ํŒŒ์•…์ด ์‰ฝ๊ฒŒ game.dart ์— ๊ตฌํ˜„ํ•˜์˜€๋‹ค.


๐Ÿ’ฌ REDAME ์ž‘์„ฑ

โœ… Dart RPG Console Game

๐ŸŽฎ ํ„ฐ๋ฏธ๋„ ๊ธฐ๋ฐ˜์˜ ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ RPG ๊ฒŒ์ž„

โœ”๏ธ ์ง์ ‘ ์บ๋ฆญํ„ฐ์˜ ๋Šฅ๋ ฅ์น˜์™€ ๋ชฌ์Šคํ„ฐ์˜ ์ข…๋ฅ˜ ๋ฐ ๋Šฅ๋ ฅ์น˜๋ฅผ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•˜์—ฌ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โœ”๏ธ ํ”Œ๋ ˆ์ด์–ด๋Š” ์ด๋ฆ„์„ ์„ค์ •ํ•˜๊ณ , ๋“ฑ์žฅํ•˜๋Š” ๋ชฌ์Šคํ„ฐ์™€ ์ „ํˆฌ๋ฅผ ํ†ตํ•ด ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์บ๋ฆญํ„ฐ ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›์•„ ๊ฒŒ์ž„ ์‹œ์ž‘
  • CSV ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์บ๋ฆญํ„ฐ ๋ฐ ๋ชฌ์Šคํ„ฐ ๋Šฅ๋ ฅ์น˜ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  • ๋žœ๋คํ•œ ๋ชฌ์Šคํ„ฐ ๋“ฑ์žฅ
  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ํ†ตํ•œ ํ–‰๋™ ์„ ํƒ
  • ์ „ํˆฌ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
  • ๋ชฌ์Šคํ„ฐ ์ฒ˜์น˜ ํ›„ ๋‹ค์Œ ์ „ํˆฌ ๋ฐ˜๋ณต
  • ๊ฒŒ์ž„ ์ข…๋ฃŒ ์‹œ ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅ

๐Ÿ—‚๏ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

๐Ÿ“ฆ dart_rpg_game
โ”œโ”€โ”€ bin/
โ”‚   โ””โ”€โ”€ main.dart             # ๊ฒŒ์ž„ ์‹คํ–‰ ํŒŒ์ผ
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ utils.dart            # ๊ณตํ†ต ํด๋ž˜์Šค
โ”‚   โ”œโ”€โ”€ character.dart        # ์บ๋ฆญํ„ฐ ํด๋ž˜์Šค
โ”‚   โ”œโ”€โ”€ monster.dart          # ๋ชฌ์Šคํ„ฐ ํด๋ž˜์Šค
โ”‚   โ”œโ”€โ”€ game.dart             # ์ „์ฒด ๊ฒŒ์ž„ ์ง„ํ–‰
โ”‚   โ””โ”€โ”€ data.dart             # CSV ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋ฐ ์ €์žฅ
โ”œโ”€โ”€ test/
โ”‚   โ””โ”€โ”€ test.dart             # ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
โ”œโ”€โ”€ data/
โ”‚   โ”œโ”€โ”€ characte.txt          # ์บ๋ฆญํ„ฐ ๋Šฅ๋ ฅ์น˜
โ”‚   โ””โ”€โ”€ monsters.txt          # ๋ชฌ์Šคํ„ฐ ๋ฆฌ์ŠคํŠธ
โ””โ”€โ”€ README.md

๐Ÿ“„ ์‚ฌ์šฉ ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ

๐Ÿ“Œ character.txt

100,20,10

์ฒด๋ ฅ, ๊ณต๊ฒฉ๋ ฅ, ๋ฐฉ์–ด๋ ฅ


๐Ÿ“Œ monsters.txt

์Šฌ๋ผ์ž„,40,10
๊ณ ๋ธ”๋ฆฐ,60,15
์˜คํฌ,80,20

์ด๋ฆ„, ์ฒด๋ ฅ, ๊ณต๊ฒฉ๋ ฅ


๐Ÿ“„ ์ €์žฅ ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ

๐Ÿ“Œ result.txt

hayanmini, 20, ์Šน๋ฆฌ

์บ๋ฆญํ„ฐ ์ด๋ฆ„, ๋‚จ์€ ์ฒด๋ ฅ, ์ „ํˆฌ ๊ฒฐ๊ณผ


โš™๏ธ ์‹คํ–‰ ๋ฐฉ๋ฒ•

๐Ÿ‘‰ bin ํด๋” main.dart ํŒŒ์ผ ์‹คํ–‰

dart run bin/main.dart

โœ… ๊ฒŒ์ž„ ํ๋ฆ„

  1. ์บ๋ฆญํ„ฐ ์ด๋ฆ„ ์ž…๋ ฅ(์บ๋ฆญํ„ฐ ์ƒ์„ฑ์‹œ 30% ํ™•๋ฅ ๋กœ ์ถ”๊ฐ€ ์ฒด๋ ฅ ํš๋“)
  2. ๋ชฌ์Šคํ„ฐ ๋žœ๋ค ๋“ฑ์žฅ
  3. ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๊ณต๊ฒฉ, ๋ฐฉ์–ด ๋˜๋Š” ์•„์ดํ…œ ์‚ฌ์šฉ ์„ ํƒ
  4. ์ „ํˆฌ ์ง„ํ–‰(์•„์ดํ…œ ์‚ฌ์šฉ ์‹œ 1ํ„ด๋™์•ˆ ๊ณต๊ฒฉ๋ ฅ 2๋ฐฐ, 3ํ„ด๋งˆ๋‹ค ๋ชฌ์Šคํ„ฐ ๋ฐฉ์–ด๋ ฅ ์ฆ๊ฐ€)
  5. ๋ชฌ์Šคํ„ฐ ์ฒ˜์น˜ ์‹œ ๋‹ค์Œ ๋ชฌ์Šคํ„ฐ ๋“ฑ์žฅ
  6. ์บ๋ฆญํ„ฐ ์‚ฌ๋ง ๋˜๋Š” ์ „ํˆฌ ์ข…๋ฃŒ ์„ ํƒ ์‹œ ๊ฒŒ์ž„ ์ข…๋ฃŒ
  7. ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ์— ์ €์žฅ

๐Ÿพ ์•ž์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด ์ข‹์€ ๊ธฐ๋Šฅ

  • ์บ๋ฆญํ„ฐ ํ–‰๋™ ์ค‘ ๋„๋ง ๊ธฐ๋Šฅ
  • ์บ๋ฆญํ„ฐ ํฌ๋ฆฌํ‹ฐ์ปฌ ๊ณต๊ฒฉ ๊ธฐ๋Šฅ

โœจ ํ”„๋กœ์ ํŠธ ๋ชฉ์ 

  • Dart ๋ฌธ๋ฒ• ํ•™์Šต ๋ฐ ์ฝ˜์†” ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ ์—ฐ์Šต
  • ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•œ ํŒŒ์ผ ๋ถ„๋ฆฌ ์‹ค์Šต
  • ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋ฐ ์ €์žฅ, ์ž…์ถœ๋ ฅ ๋กœ์ง์œผ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ ๊ฐ•ํ™”

๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

โœ” ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ Dart ๊ฐ•์˜
โœ” ๊ณต์‹ Dart ๋ฌธ์„œ


๐ŸŒผ Git Commit

โœ… ๋„์ „ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์™„๋ฃŒ
โœ”๏ธ ์บ๋ฆญํ„ฐ ์ฒด๋ ฅ ์ฆ๊ฐ€ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
โœ”๏ธ ์บ๋ฆญํ„ฐ ์•„์ดํ…œ ์‚ฌ์šฉ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
โœ”๏ธ ๋ชฌ์Šคํ„ฐ ๋ฐฉ์–ด๋ ฅ ์ฆ๊ฐ€ ๊ธฐ๋Šฅ ์ถ”๊ฐ€


โœ… README ์ž‘์„ฑ

โœ… README ์ˆ˜์ •


๐ŸŒฑ ์˜ค์ „์— ๋ถ€๋žด๋ถ€๋žด ๋„์ „ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ , README๋„ ์ž‘์„ฑ์„ ์™„๋ฃŒํ•ด ์ปค๋ฐ‹ ๋ฐ ์ œ์ถœ์„ ์™„๋ฃŒํ–ˆ๋‹ค.
์‹œ๊ฐ„์ด ์ข€ ์•„์Šฌ์•„์Šฌํ–ˆ๋Š”๋ฐ ์ œ์ถœํ•˜๊ณ  ๋ณด๋‹ˆ ๋งˆ๊ฐ 1๋ถ„ ์ „์ธ๊ฐ€ ๊ทธ๋žฌ๋˜๊ฑฐ ๊ฐ™๋‹ค.

๊ณผ์ œ๋ฅผ ํ•˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ์ด ๋‚ด๊ฐ€ ์ฝ”๋”ฉํ•œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ๋„ ์‹ ๊ธฐํ•˜๊ณ , ์•ˆ๋˜๋Š” ์˜ค๋ฅ˜๋ถ€๋ถ„์„ ๋‚ด๊ฐ€ ์ง์ ‘ ํ…Œ์ŠคํŠธ ํ•˜๋ฉด์„œ ์ฐพ์•„์„œ ๊ณ ์น˜๋Š” ๊ฒƒ๋„ ์žฌ๋ฏธ๊ฐ€ ์žˆ์—ˆ๋‹ค.

๋‹ค๋งŒ ๋‚œ์ด๋„๊ฐ€ ์•ž์— ๊ณผ์ œ์— ๋น„ํ•ด ๊ฐ‘์ž๊ธฐ ์–ด๋ ค์›Œ์ง„ ๊ฒƒ ๊ฐ™์•„ ์‹œ๊ฐ„์ด ์ข€ ์ด‰๋ฐ•ํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚œ ๋’ค์—” ํ•ด์„ค ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ ์žฌ์ฐจ ํ™•์ธ, ์ฆ‰ ๊ฒ€์ฆํ•˜๋Š” ์‹œ๊ฐ„๋„ ๊ฐ€์ง€๊ณ  ์ฝ”๋“œ๋„ ๋‚ด๊ฐ€ ์ž˜ ์ดํ•ดํ–ˆ๋Š”์ง€, ๋‚ด๊ฐ€ ์™œ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•œ์ง€ ๋“ฑ ํ™•์ธํ•ด๋ณด์•˜๋‹ค.

์ถ”๊ฐ€๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๊ฐ€ ์–ด๋ ต๊ธฐ๋„ ํ•˜๊ณ  ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ๋˜์–ด์„œ ์ถ”๊ฐ€๋กœ ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋Ÿฐ์„ ๋Œ๋ ค๊ฐ€๋ฉด์„œ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์–ด๋ณด์•˜๋‹ค.

๊ทธ ์™ธ์—” ๋ณต์Šต ์œ„์ฃผ๋กœ ๊ฐœ์ธ ํ•™์Šต์„ ์ง„ํ–‰ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.


๐Ÿš€ ๋‹ค์Œ์ฃผ๋Š” ์ƒˆ๋กœ์šด ๊ฐ•์˜๊ฐ€ ์žˆ์„์ง€ ๊ถ๊ธˆํ•œ๋ฐ, ๊ณผ์ œ ์ œ์ถœํ•˜๋ฉด์„œ ๋ณด๋‹ˆ ๋‹ค์Œ์—๋Š” ์•ฑ ๊ตฌํ˜„? ๊ฐœ์ธ ๊ณผ์ œ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

๊ณผ์—ฐ ์ž˜ํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ฑฑ์ •์ด ๋งŽ์ด ๋˜๊ธฐ๋„ ํ•˜๊ณ , ์ข€ ๋” ๊ธฐ์ดˆ๋ฅผ ์Œ“๊ณ  ์‹ฌํ™” ๋Šฅ๋ ฅ์„ ๊ธฐ๋ฅด๊ณ  ์‹ถ์€๋ฐ ์–ด๋–ป๊ฒŒ ํ•™์Šต์„ ํ•ด์•ผํ• ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.

์šฐ์„ , ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€๋ฉด์„œ ์‚ฌ๊ณ ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋Šฅ๋™์ ์œผ๋กœ ๋‹ค๋ฃฐ์ค„ ์•Œ์•„์•ผํ•˜๋Š” ๊ฒƒ์€ ๋งž๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ...

์žฌ๋Šฅ..? ์Šต๋“๋ ฅ์ด ์ข‹์€ ๊ฒƒ๋„ ์•„๋‹ˆ๋ผ์„œ ๋” ๋…ธ๋ ฅํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ธ๋ฐ, ์ด ๋…ธ๋ ฅ์„ ์–ด๋А ๋ฐฉํ–ฅ์œผ๋กœ ์Ÿ๋А๋ƒ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋ž˜๋„ ์ง€๊ธˆ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ €๋ฒˆ์ฃผ ๊ณผ์ œ๊ฐ€ ์ง€๊ธˆ์€ ํ•ด๋ณด๋ผ๊ณ  ํ•˜๋ฉด ์‰ฌ์šธ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.

๊ทธ๋Ÿฐ๊ฑธ ๋ณด๋ฉด ์‹ค๋ ฅ์ด ์กฐ๊ธˆ์”ฉ์€ ํ–ฅ์ƒ๋˜๊ณ  ์žˆ๋‹ค๋Š” ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹๊นŒ ์‹ถ๋‹ค ๐ŸŽˆ

profile
๐Ÿ’ป [25.05.26~] Flutter ๊ณต๋ถ€์ค‘โณ

0๊ฐœ์˜ ๋Œ“๊ธ€