과제1
4x4 16개의 정수를 담을 수 있는 2차원 배열을 만든 후, 반복문을 이용하여 3의 배수들로 채워 넣는다. 그 후 2행3열 요소와 3행 2열 요소를 바꾼 후 출력하여보자
- int형 2차원 배열을 선언
- 반복문을 통하여 순서대로 3의 배수들로 채워넣음
- 2행3열 요소와 3행 2열 요소를 바꾼다
- 4x4의 형태로 들어있는 숫자들을 출력
※인간의 언어로 2행3열 입니다. 0부터가 아닌 1부터 시작이라고 가정합니다
접근 방식
2중 반복문을 활용해 3의 배수를 2차원 배열에 담는데, 그때 1씩 증가하는 K변수 값을 이용해서 0*3 , 1*3 , 2*3 ... 3의 배수를 담아 주었다
static void Main(string[] args)
{
int k = 0;
int[,] array3 = new int[4, 4];
for (int i = 0; i < array3.GetLength(0); i++)
{
for (int j = 0; j < array3.GetLength(1); j++)
{
k++;
array3[i, j] = 3 * k;
}
}
int temp = array3[2, 3];
array3[2, 3] = array3[3, 2];
array3[3, 2] = temp;
for (int i = 0; i < array3.GetLength(0); i++)
{
for (int j = 0; j < array3.GetLength(1); j++)
{
Console.Write(array3[i, j]);
}
Console.WriteLine("");
}
}
심화 과제
과제1의 확장입니다. 플레이어에게 4개의 스킬이 있고, 각각의 스킬명이 존재합니다. 초기값은 다음과 같습니다. 변수를 쓰셔도, 배열을 쓰셔도 상관 없습니다
Q스킬 5
W스킬 | 3 |
E스킬 | 10 |
R스킬 | 7 |
콘솔을 킨 첫 화면에서 일단 모든 스킬과 턴을 보여줍니다.
그 아래에 유저에게 선택권을 줍니다.
- 턴을 넘길지,
- 스킬을 사용할 지 두 선택지를 줍니다.
- 스킬을 선택하였다면, 어느 스킬을 사용할 지 입력받고 만약 그 스킬의 쿨타임이 0이면 다시 쿨타임 초기 숫자로 원복(Q는 5, W는3, E는 10, R은 7)
- 쿨타임이 돌아오지 않은 것을 선택 시, 쿨타임이 돌아오지 않았다는 메시지 출력
- 턴 넘김을 사용 시, 모든 스킬 쿨타임 1 감소. 만약 쿨타임 0이고 스킬을 사용하지 않는다면 0으로 유지. 만약 쿨타임이 0이라면 0을 출력하는 것이 아닌, “스킬준비완료” 를 출력합니다
- 원하는 대로 커스터마이징 해도 괜찮습니다
- 아래는 예시입니다.
접근
1번 키를 누르면 모든 쿨타임 -1씩 감소시키고 2번 키를 누르면 스킬 사용가능하게 만들고 만약 스킬을 사용한다면 쿨타임의 값을 다시 초기화 시켰습니다.
static void Main(string[] args)
{
int[] arrayInt = new int[] { 5, 3, 10, 7 };
string[] arrayStr = new string[] { "Q 스킬", "W 스킬", "E 스킨", "R스킬" };
Console.WriteLine("");
Console.WriteLine("사용 가능한 스킬은 다음과 같습니다");
Console.WriteLine("");
// 참조형은 초기화 하지 않으면 null 값 들어감
while (true)
{
Console.Clear();
PrintSkill(arrayInt, arrayStr);
Console.WriteLine("------------------------");
Console.WriteLine("액션을 선택 해주세요");
Console.WriteLine("------------------------");
Console.WriteLine(" 1. 턴 넘김");
Console.WriteLine(" 2. 스킬 사용");
Console.WriteLine(" 0. 게임 종료");
string chooose = Console.ReadLine();
if (chooose == "1")
{
SkillPass(arrayInt);
}
else if (chooose == "2")
{
Console.WriteLine("사용할 스킬을 입력해 주세요");
for (int i = 0; i< arrayInt.Length; i++)
{
if(arrayInt[i] != 0)
{
Console.WriteLine("사용 가능한 스킬이 없습니다.");
continue;
}
}
string useBotton = Console.ReadLine();
if (useBotton == "q")
{
if (arrayInt[0] == 0)
{
arrayInt[0] = 5;
}
}
else if (useBotton == "w")
{
if (arrayInt[1] == 0)
{
arrayInt[1] = 3;
}
}
else if (useBotton == "e")
{
if (arrayInt[2] == 0)
{
arrayInt[2] = 10;
}
}
else if (useBotton == "r")
{
if (arrayInt[3] == 0)
{
arrayInt[3] = 7;
}
}
}
else if (chooose == "0")
{
break;
}
}
}
static void PrintSkill(int[] time, string[] skill)
{
for (int i = 0; i < skill.Length; i++)
{
if (time[i] > 0)
{
Console.WriteLine($"{skill[i]} : {time[i]}");
}
else if (time[i] == 0)
{
Console.WriteLine($"{skill[i]} : 스킬 사용 가능");
}
}
}
static void SkillPass(int[] time)
{
for (int i = 0; i < time.Length; i++)
{
if (time[i] > 0)
{
time[i] -= 1;
}
}
}
'경일게임아카데미 실습 > 11월' 카테고리의 다른 글
2024 - 11 - 29 (0) | 2024.11.29 |
---|---|
과제 - 숫자 야구 게임 (2024 - 11 - 27) (0) | 2024.11.27 |
반복문 과제 - 피라미드와 다이아몬드 출력 (2024 - 11 - 26) (0) | 2024.11.26 |