정체불명의 모모
c++ 문제 : Tic-Tac-Toe게임(어서와c++은 처음이지?) 본문
Tic-Tca-Toe게임은 2명의 경기자가 오른쪽과 같은 보드를 이용하여서 번갈아가며 0와 X를 놓는 게임입니다.
1. 같은 글자가 가로, 세로 , 혹은 대각선 상에 놓이면 이기게 됩니다.
보드를 나타내는 2차원 배열 board[3][3]를 정의한다. 보드를 초기화 한다. for(k=0 ; k < 9 ; k++) { 사용자로 부터 좌표 x,y를 받는다. 보드를 화면에 출력한다. if( 현재 경기자가 'x'이면 ) board[x][y] ='x' else board[x][y] ='0' } |
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
int x, y;
char board[3][3] = { ' ' };
cout << " ================= Tic - Tac - Toe 게임에 오신걸 환영 합니다. ====================== " << endl;
for (int k = 0; k < 9; k++)
{
cout << " 선택 하시고 싶은 x 와 y 의 좌표를 입력 해주세요 : ";
cin >> x, cin >> y;
if(k%2 == 0)
{
board[x][y] = 'X';
}
else
board[x][y] = 'O';
cout << "---|---|---" << endl;
cout << " " << board[0][0] << " |" << " " << board[0][1] << " |" << " " << board[0][2] << endl;
cout << "---|---|---" << endl;
cout << " " << board[1][0] << " |" << " " << board[1][1] << " |" << " " << board[1][2] << endl;
cout << "---|---|---" << endl;
cout << " " << board[2][0] << " |" << " " << board[2][1] << " |" << " " << board[2][2] << endl;
}
return 0;
}
내가 작성한 코드 이다. ㅎㅎ 체크 기능 까지 넣으려 했는데.. 배웠는데 잘 기억이 안난다.. 알고리즘이 많이 약하다..
나와있는 코드와 좀 다르지만 잘만 나오면 되는게 아닌가 싶당ㅎㅎ 방법은 여러가지 이니깐
체크 기능을 위해 전에 배웠던 빙고 게임 코드를 살펴 볼것 이다.(c#)
< 빙고 게임 >
using System;
class program
{
static void Main(string [] args)
{
int[] arrays = new int[]
{
1,2,3,4,5,
6,7,8,9,10,
11,12,13,14,15,
16,17,18,19,20,
21,22,23,24,25
};
View(arrays);
string input = "";
while(input != "exit")
{
Console.Clear();
View(arrays);
Console.WriteLine("Cout : " + Bingo(arrays).Tostring());
input = Console.ReadLine();
if(string.IsNullOrEnpty(intpu)) continue;
int data = 0;
if(int.TryParse(intpu, out data))
{
if(data < 26 )
{
arrays[data -1] = -1 ;
}
}
}
}
static void View(int[] arrays)
{
for(int i = 1; i < arrays.Length + 1 ; ++i)
{
if(i%5 == 0 )
Console.WriteLine(arrays[i-1]);
else
Console.Write(string.Format("{0}\t", arrays[i-1]));
}
}
// 여기서 부터 빙고 체크 해주는 함수
static int Bingo(int[] arrays)
{
int count = 0 ;
bool isBingo ;
// Vertical//
for(int i = 0 ; i < 5 ; ++i)
{
isBingo = true;
for(int j=0;j<5 ; ++j)
{
if(arrays[i+(j*5)] != -1)
{
isBingo =false;
break; // false 하나라도 뜨면 바로 작업 중지
}
}
if(isBingo) count++;
}
// Horizontal//
for(int i =0; i<5; ++i)
{
isBingo = true;
for(int j=0; j < 5 ; ++j)
{
if(arrays[i*5 +j] != -1)
{
isBingo = false;
break;
}
}
if(isBingo) cout++;
}
// LeftBottom//
isBingo = true ;
for(int i = 0; i<25+1 ; i+=6)
{
if(arrays[i] != -1)
{
isBingo = false ;
break;
}
}
if(isBingo) count++;
//Right Bottom//
for(int i = 4; i <21 ; i+=4)
{
if(arrays[i] != -1)
{
isBingo = false;
break;
}
}
if(isBingo)count++;
return count;
}
}
return cout;
후에 다시 코드를 짜보자~ㅎㅎ
'프로그래밍(c++)' 카테고리의 다른 글
c++ 04 : 객체는 무엇으로 구성되는가? [ 클래스와 객체 / 어서와c++은 처음이지] (0) | 2019.12.17 |
---|---|
c++ 04 : 객체 지향이란??? [ 클래스와 객체 / 어서와c++은 처음이지] (0) | 2019.12.17 |
c++ 02 : 2차원 배열 (어서와c++은 처음이지?) (0) | 2019.12.04 |
c++ 문제 : 사과를 제일 좋아하는 사람 찾기 (어서와c++은 처음이지?) (1) | 2019.12.04 |
c++ 문제 : 배열에서 최대값 찾기 (어서와c++은 처음이지?) (0) | 2019.12.03 |
Comments