'ABCDEFG'에 해당되는 글 55건

  1. 2011.09.03 [SOCKET] clinet for poker
  2. 2011.09.03 [SOCKET]1:1 chatting server
  3. 2011.09.03 [SOCKET]1:1 chating client
  4. 2011.09.03 [SOCKET]chating server for test
  5. 2011.09.03 [SOCKET]chating client for test
  6. 2011.09.03 [ALGORISM]poj 1166
  7. 2011.09.03 [ALGORISM]poj 1218
  8. 2011.09.03 [ALGORISM]poj 1298
  9. 2011.09.03 [ALGORISM]poj 2853
  10. 2011.09.03 [ALGORISM]poj 1077
2011. 9. 3. 14:54


/*
2011.05.22-28.
Daun.

Client For Poker..
*/
#pragma comment(lib,"ws2_32.lib")
#include <winsock2.h>
#include <stdio.h>
#include <math.h>
#include <string.h>

#define PORT 8494
#define IP "192.168.0.36"

#define OFF 0
#define ON 1

char *SHAPE[4] = {"♤", "◇", "♡", "♧"};
char *NUM[13] = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
enum {BLACK,D_BLUE,D_GREEN,D_SKYBLUE,D_RED,D_VIOLET,D_YELLOW,GRAY,D_GRAY,BLUE,GREEN,SKYBLUE,RED,VIOLET,YELLOW,WHITE,};

void SetColor(int backcolor, int fontcolor)
{
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), backcolor*16+fontcolor);
}


int myCard[5]={0};  //나의 카드 저장배열
int winner = 0;

int player0Card[5]={0}; //다른player의 카드 저장배열
int player1Card[5]={0}; //다른player의 카드 저장배열
int player2Card[5]={0}; //다른player의 카드 저장배열
int player3Card[5]={0}; //다른player의 카드 저장배열
int player4Card[5]={0}; //다른player의 카드 저장배열
int playerCard[5][5]={0};

int playerMoney[5]={20000000};
int allMoney = 0;
int willgiveMoney=100;

int menu=0;//선택매뉴를 저장하는 변수
int cardTurn = 0; //공개한 카드의 갯수를 저장함 0은 어처피 비공개라서...
int myPlayerNumber=0;
int die = OFF; //0인경우는 다이가 아닌경우 1로 변하면 다이가 되어있는경우.

int itemp=0; //int형 임시 저장소
char ctemp=0; //char형 임시 저장소

SOCKET soc; //소켓변수
struct sockaddr_in addr; //구조체변수

char buf[256]={0}; //전달할 문자열을 저장할 배열

void show();
void print_card(int);
void display_card(int , int);
void playGame(int);
void betting(int,int);
void printMoney(int );

void main()
{
 system("COLOR F0");
 SetColor(WHITE,BLACK);
 WSADATA wsa;
 WSAStartup(MAKEWORD(2,0),&wsa);

 soc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

 addr.sin_addr.S_un.S_addr=inet_addr(IP);
 addr.sin_family=AF_INET;
 addr.sin_port=htons(8494);
 SetColor(WHITE,VIOLET);
 printf("\n\n\n\n\n\n\nWaiting~");
 SetColor(WHITE,BLACK);
 connect(soc,(struct sockaddr*)&addr, sizeof(addr));

 memset(buf,0,256);
 recv(soc,buf,256,0);
 sscanf(buf,"%d",&myPlayerNumber);

 die = OFF;
 memset(buf,0,256);
 recv(soc,buf,256,0); //나의 카드 목록을 받음
 sscanf(buf, "%d %d %d %d %d",&myCard[0],&myCard[1],&myCard[2],&myCard[3],&myCard[4]); //나의 카드를 배열에 저장

 system("cls");
 SetColor(WHITE,VIOLET);
 printf("당신은 %d번 플레이어입니다.\n",myPlayerNumber);
 printf("게임이 시작되었습니다.\n\n");
 SetColor(WHITE,BLACK);
 printf("\t\t받은 카드는 ");
 print_card(myCard[0]);
 print_card(myCard[1]); //받은 카드중 2개를 공개
 printf("입니다.\n\n");

 while(1)
 {
  fflush(stdin);
  memset(buf,0,256);
  recv(soc, buf, 256, 0);
  menu = buf[0];
  playGame(menu);
  if(menu == '6')
   break;
 }

 WSACleanup();
 closesocket(soc);
}

void print_card(int card)
{
 int shape = card / 13;
 int num = card % 13;
 if(shape==1||shape==2)
  SetColor(WHITE,RED);
 printf("%s%s ", SHAPE[shape], NUM[num]);
 SetColor(WHITE,BLACK);
} //숫자로 저장된 카드를 모양으로 바꾸어주는 함수


void display_card(int card[5], int num)
{
 num++;
 for(int i = 0 ; i<=num; i++)
  if(card[i] != 99)
   print_card(card[i]);
  else
   printf(" XX ");
 puts("");
} //카드목록을 보여주는 함수


void show()
{
 Sleep(1000);   
 system("cls");
 SetColor(WHITE,VIOLET);
 printf("당신은 %d번 플레이어입니다.\n\n\n",myPlayerNumber);
 SetColor(WHITE,BLACK);
 for(int i = 0 ; i < 5 ; i++)
 {
  if(i==myPlayerNumber)
  {
   printf("\t\t나의 카드는 : ");
   if(menu =='3')
    display_card(myCard,cardTurn+1);
   else
    display_card(myCard,cardTurn);
  }
  else
  {
   printf("\t\tplayer%d의 카드는 : ",i);
   display_card(playerCard[i],cardTurn-1);
  }
 }

}

void playGame(int menu)
{
 switch(menu)
 {
 case '1':
  if(die == OFF)
  {
   while(1)
   {
    printf("배팅을 할 차례입니다.\n (콜 : 1번, 하프 : 2번, 다이 : 0번)");
    printf("\n콜 : %d  , 하프 : %d\n\n",willgiveMoney,allMoney/2);
    fflush(stdin);
    scanf("%c",&ctemp);
    if(ctemp == '1' || ctemp == '2' || ctemp == '0')
     break;
   }

   if(ctemp == '0')
    die = ON;

   memset(buf,0,256);
   sprintf(buf,"%c",ctemp);
   send(soc,buf,256,0);
  }
  else
  {
   printf("현재 다이 상태 입니다.\n");
   fflush(stdin);
   memset(buf,0,256);
   sprintf(buf,"%c",'0');
   send(soc,buf,256,0);
  }
  //나의 배팅정보를 보냄
  break;

 case '2':
  sscanf(buf, "%d %d %d %d %d %d",&menu,&playerCard[0][cardTurn],&playerCard[1][cardTurn],&playerCard[2][cardTurn],&playerCard[3][cardTurn],&playerCard[4][cardTurn]);//각 플레이어의 2번재 카드를 저장
  if(die == OFF)
   show();
  else
  {   
   Sleep(1000);
   system("cls");
   printf("다이상태입니다. \n게임이 끝날때까지 기다리숑!");
  }
  cardTurn++;
  //카드를 받음
  break;

 case '3':
  cardTurn=2;
  show();
  //마지막카드확인
  break;

 case '5':
  int a, b;
  sscanf(buf,"%d %d %d",&menu,&a,&b);

  betting(a,b);

  if(b == 0)
   for(int i = 0 ; i < 5 ; i++)
    if(a == i)
     for(int p = 0 ; p < cardTurn; p++)
      playerCard[a][i] = 99;
  fflush(stdin);
  //memset(buf,0,256);
  recv(soc, buf, 256,0);
  sscanf(buf,"%d %d %d %d %d %d %d",&allMoney, &willgiveMoney, &playerMoney[0], &playerMoney[1], &playerMoney[2], &playerMoney[3], &playerMoney[4]);

  //배팅을한결과보여줌
  break;

 case '6':
   for(int i = 0 ; i < 5 ; i++)
   {
    sscanf(buf,"%d %d %d %d %d %d %d %d",&menu, &itemp, &playerCard[i][0],&playerCard[i][1],&playerCard[i][2],&playerCard[i][3],&playerCard[i][4],&winner);
    memset(buf,0,256);
    if(i != 4)
    recv(soc, buf, 256, 0);
   }
   for(int i = 0 ; i < 5 ; i++)
   {
    printf("player %d  : ",i);
    display_card(playerCard[i],3);
    puts("");
   }
   printf("\n승자는 : %d player 입니다.\n",winner);
   Sleep(10000);
   break;

 case '9':
  while(1)
  {
   printf(" 어떤카드를 공개하겠습니까?(왼쪽카드 : 0, 오른쪽카드 : 1) : ");
   fflush(stdin);
   scanf("%d",&itemp); //공개할 카드 번호를 선택
   if(itemp == 0 || itemp == 1)
    break;
  }
  if(itemp==0)
   sprintf(buf,"%d",myCard[0]);
  else
   sprintf(buf,"%d",myCard[1]);

  send(soc,buf,256,0); //공개할 카드 번호를 보냄
  break;
 }
}


void betting(int player ,int sel)
{
 switch(sel)
 {
 case 1:
  printf("\n\n%d번 플레이어가 콜을 했습니다.\n",player);
  printMoney(player);
  break;
 case 2:
  printf("\n\n%d번 플레이어가 하프를 했습니다.\n",player);
  printMoney(player);
  break;
 case 0:
  printf("\n\n%d번 플레이어가 다이를 했습니다.\n",player);
  printMoney(player);
  break;

 }
}

void printMoney(int player)
{
 printf("\n%d번 플레이어의 남은 돈은 %d원 입니다.\n\n",player,playerMoney[player]);
}

'Code > socket' 카테고리의 다른 글

[SOCKET]1:1 chatting server  (0) 2011.09.03
[SOCKET]1:1 chating client  (0) 2011.09.03
[SOCKET]chating server for test  (0) 2011.09.03
[SOCKET]chating client for test  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:53


/*
2011.05.17.-18.
Daun.
1:1chatting.
Server..
*/
#include <winsock2.h>
#include <stdio.h>
#include<iostream>

#include<process.h> //스레드
#include<windows.h> //스레드

#include<time.h> //sleep 사용시

 


#define PORT 3000;
 char buf[256]={0};
 SOCKET soc, soc_client;


unsigned WINAPI rThreadFunction(void* arg);


unsigned WINAPI sThreadFunction(void* arg);

 

void main()
{
 WSADATA wsa;


 struct sockaddr_in addr;
 int size;

 HANDLE rThread, sThread;

 int intThread=0;
 WSAStartup(MAKEWORD(2,0),&wsa);

 soc = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

 

 addr.sin_family=AF_INET;
 addr.sin_port=htons(3000);
 addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

 bind(soc,(struct sockaddr*)&addr, sizeof(addr));

 listen(soc, 5);

 size = sizeof(addr);

 soc_client = accept(soc, (struct sockaddr*)&addr, &size);


 while(1)
 {
 rThread=(HANDLE)_beginthreadex(0,0,rThreadFunction,0,0,(unsigned*)intThread);
 sThread=(HANDLE)_beginthreadex(0,0,sThreadFunction,0,0,(unsigned*)intThread);
}
 TerminateThread(rThread,0);
 TerminateThread(sThread,0);

 

 closesocket(soc);
 WSACleanup();
}

unsigned WINAPI rThreadFunction(void* arg)
{
 for(int i=1;i<=30;i++)
 {
 recv(soc_client, buf, 256,0);
 printf("상대방 : %s\n",buf);
 }
 return 0;
}


unsigned WINAPI sThreadFunction(void* arg)
{
 for(int i=1;i<=30;i++)
 {
  
 scanf("%s",&buf);
 send(soc_client, buf, 256, 0);


 }
 return 0;
}

'Code > socket' 카테고리의 다른 글

[SOCKET] clinet for poker  (0) 2011.09.03
[SOCKET]1:1 chating client  (0) 2011.09.03
[SOCKET]chating server for test  (0) 2011.09.03
[SOCKET]chating client for test  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:53

/*
2011.05.17.-18.
Daun.
1:1Chatting
Client..
*/
#include <winsock2.h>
#include <stdio.h>
#include<iostream>

#include<process.h> //스레드
#include<windows.h> //스레드

#include<time.h> //sleep 사용시

 

#define PORT 3000
 char buf[256]={0};
  SOCKET soc;

 

unsigned WINAPI rThreadFunction(void* arg);

unsigned WINAPI sThreadFunction(void* arg);

void main()
{


 struct sockaddr_in addr;
 HANDLE rThread, sThread;

 int intThread=0;

 WSADATA wsa;
 WSAStartup(MAKEWORD(2,0),&wsa);

 soc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

 addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
 addr.sin_family=AF_INET;
 addr.sin_port=htons(3000);

 connect(soc,(struct sockaddr*)&addr, sizeof(addr));
while(1)
{
 sThread=(HANDLE)_beginthreadex(0,0,sThreadFunction,0,0,(unsigned*)intThread);
 rThread=(HANDLE)_beginthreadex(0,0,rThreadFunction,0,0,(unsigned*)intThread);
}
 TerminateThread(rThread,0);
 TerminateThread(sThread,0);

 

 
 WSACleanup();
 closesocket(soc);

}


unsigned WINAPI rThreadFunction(void* arg)
{
 for(int i=1;i<=30;i++)
 {
 recv(soc, buf, 256,0);
 printf("상대방 : %s\n",buf);
 }
 return 0;
}


unsigned WINAPI sThreadFunction(void* arg)
{
 for(int i=1;i<=30;i++)
 {
  
 scanf("%s",&buf);
 send(soc, buf, 256, 0);


 }
 return 0;
}

'Code > socket' 카테고리의 다른 글

[SOCKET] clinet for poker  (0) 2011.09.03
[SOCKET]1:1 chatting server  (0) 2011.09.03
[SOCKET]chating server for test  (0) 2011.09.03
[SOCKET]chating client for test  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:52


/*
2011.05.17.-18.
Daun.

Server..
*/
#include <winsock2.h>
#include <stdio.h>


#define PORT 3000;

void main()
{
 WSADATA wsa;

 SOCKET soc, soc_client;
 struct sockaddr_in addr;
 char buf[256]={0};
 int size;

 WSAStartup(MAKEWORD(2,0),&wsa);

 soc = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

 

 addr.sin_family=AF_INET;
 addr.sin_port=htons(3000);
 addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

 bind(soc,(struct sockaddr*)&addr, sizeof(addr));

 listen(soc, 5);

 size = sizeof(addr);

 soc_client = accept(soc, (struct sockaddr*)&addr, &size);

 while(1)
 {
  recv(soc_client, buf, 256,0);
  printf("%s",buf);
  fflush(stdin);
  memset(buf,0,256);
  puts("");
  scanf("%s",buf);
  send(soc_client, buf, 256, 0);
  fflush(stdin);
  memset(buf,0,256);
  puts("");

 }

 closesocket(soc);
 WSACleanup();
}

 

 

 

'Code > socket' 카테고리의 다른 글

[SOCKET] clinet for poker  (0) 2011.09.03
[SOCKET]1:1 chatting server  (0) 2011.09.03
[SOCKET]1:1 chating client  (0) 2011.09.03
[SOCKET]chating client for test  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:51


/*
2011.05.17.-18.
Daun.

Client..
*/
#include <winsock2.h>
#include <stdio.h>

#define PORT 3000

void main()
{

 SOCKET soc;
 struct sockaddr_in addr;
 char buf[256]={0};
 WSADATA wsa;
 WSAStartup(MAKEWORD(2,0),&wsa);

 soc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

 addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
 addr.sin_family=AF_INET;
 addr.sin_port=htons(3000);

 connect(soc,(struct sockaddr*)&addr, sizeof(addr));

 while(1)
 {
  scanf("%s",&buf);
  send(soc, buf,256,0);
  fflush(stdin);
  memset(buf,0,256);
  puts("");
  recv(soc, buf,256,0);
  printf("%s",&buf);
  fflush(stdin);
  memset(buf,0,256);
  puts("");
 }


 WSACleanup();
 closesocket(soc);

}

 

'Code > socket' 카테고리의 다른 글

[SOCKET] clinet for poker  (0) 2011.09.03
[SOCKET]1:1 chatting server  (0) 2011.09.03
[SOCKET]1:1 chating client  (0) 2011.09.03
[SOCKET]chating server for test  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:48

//poj 1166
//2011 07 04
//daun
#include <iostream>
using namespace std;

void swap(int *a,int *b)
{
 int temp = *a;
 *a = *b;
 *b = temp;
}

int main()
{
 int arr[3][3]={0};
 int i = 0;
 int end = 0;
 int result[27] ={0};
 int count = 0;

 for(int a = 0 ; a< 3 ; a++)
  for(int b = 0 ; b< 3; b++)
   cin>>arr[a][b];
 while(end!=9)
 {
  end = 0;
  if(arr[0][1]* arr[1][0] *arr[1][1]* arr[1][2] * arr[2][1] )
  {
   arr[0][1]++;
   arr[1][0]++;
   arr[1][1]++;
   arr[1][2]++;
   arr[2][1]++;
   result[count] = 5;
  }
  else
  {
   if(!arr[i][1])
   {
    if(!arr[1][i])
     i++;
   }
   else if(!arr[i][0])
   {
    arr[i][1]++;
    arr[i][2]++;
    arr[i+1][1]++;
    arr[i+1][2]++;
    if(i == 0)
     result[count] = 3;
    if(i == 1)
     result[count] = 9;
   }
   else if(!arr[i][2])
   {
    arr[i][0]++;
    arr[i][1]++;
    arr[i+1][0]++;
    arr[i+1][1]++;
    if(i == 0)
     result[count] = 1;
    if(i == 1)
     result[count] = 7;
   }
   if(arr[i][0]*arr[i][1]* arr[i][2])
   {
    arr[i][0]++;
    arr[i][1]++;
    arr[i][2]++;
    if(i == 0)
     result[count] = 2;
    else
     result[count] = 8;
   }

   if(arr[0][i]* arr[1][i] * arr[2][i] )
   {
    arr[0][i]++;
    arr[1][i]++;
    arr[2][i]++;
    if(i == 0)
     result[count] = 4;
    else
     result[count] = 6;
   }
  } 

  for(int a = 0; a < 3 ; a++)
   for(int b= 0 ; b< 3; b++)
   {
    if(arr[a][b] >=4)
     arr[a][b] = arr[a][b]%4;
    if(arr[a][b] == 0)
     end++;
   }
   if(result[count])
  count++;

 }
 
 for(int a = 1; a<count; a++)
  for(int b = a; b<count; b++)
  if(result[b]<result[b-1])
  {
   int temp = result[b-1];
   result[b-1] = result[b];
   result[b]= temp;
  }

 for(int a = 0 ; a < count; a++)
  cout << result[a] << "\t";

 return 0;
}

'Code > Algorism' 카테고리의 다른 글

[ALGORISM]poj 1218  (0) 2011.09.03
[ALGORISM]poj 1298  (0) 2011.09.03
[ALGORISM]poj 2853  (0) 2011.09.03
[ALGORISM]poj 1077  (0) 2011.09.03
[ALGORISM]poj 1163  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:48

//2011 07 05
//poj 1218
//daun
#include <iostream>
using namespace std;

int main()
{
 int cell=0;
 int count = 0;
 int number = 0;
 cin>>count;
 for(;count>0;count--)
 {
  number = 0;
 bool arr[101] = {0}; // 0이 열린거 1이 닫힌거

  cin >> cell;

  for(int i = 1 ; i <=cell; i++)
  {
   for(int a = 1 ; a <=cell ; a++)
   {
    if(a%i == 0)
    {
     if(!arr[a])
      arr[a] = 1;
     else if(arr[a])
      arr[a] = 0;
    }
   }
  }

  for(int i = 1 ; i <=cell; i++)
   if(arr[i])
    number ++;

  cout << number<<endl;
 }
 return 0;
}

'Code > Algorism' 카테고리의 다른 글

[ALGORISM]poj 1166  (0) 2011.09.03
[ALGORISM]poj 1298  (0) 2011.09.03
[ALGORISM]poj 2853  (0) 2011.09.03
[ALGORISM]poj 1077  (0) 2011.09.03
[ALGORISM]poj 1163  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:47

//2011 07 02
//POJ 1298
//The Hardest Problem Ever


//1~200자의 문자를 받음 옆으로 5칸씩 -> 아스키코드 이용하여 출력
//int 배열로 받고, 끝나는거 확인하구 입력은... 아 끝나는게 문제구나

#include <iostream>
#include <string>
using namespace std;

int main()
{
 string strStart, strEnd;
 string strIn[100];
 int i = 0;
 getline(cin,strStart) ;

 while(strStart != "ENDOFINPUT")
 {
  getline(cin,strIn[i]);
  for(int a = 0 ; a < strIn[i].length()  ; a++)
  {
   if(strIn[i][a] >= 65 && strIn[i][a] <=90)
   {
    strIn[i][a] -= 5;
    if(strIn[i][a] < 65 && strIn[i][a] >=60)
     strIn[i][a] += 26;
   }
  }
  getline(cin,strEnd);
  i++;
  getline(cin,strStart) ;
 }


 for(int a= 0 ; a <i ; a++)
 {
  cout << strIn[a];
  cout << endl;
 }
 system("pause");
 return 0;
}

'Code > Algorism' 카테고리의 다른 글

[ALGORISM]poj 1166  (0) 2011.09.03
[ALGORISM]poj 1218  (0) 2011.09.03
[ALGORISM]poj 2853  (0) 2011.09.03
[ALGORISM]poj 1077  (0) 2011.09.03
[ALGORISM]poj 1163  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:47


//2011 07 05
//poj 2853
//daun
#include <iostream>
using namespace std;

int main()
{
 int count = 0;
 int number = 0;
 int answer = 0;
 int i = 0;
 int sum = 0;
 cin >> count;
 while(i!=count)
 {
  cin >> i;
  sum = 0;
  answer = 0;
  cin >> number;
  for(int a = number; a> 0 ; a--)
  {
   sum = a;
   for(int b = a -1; b > 0 ; b--)
   {
    sum+=b;
    if(sum ==  number)
     answer++;
   }
  }
  cout <<i<<" " << answer << endl;
 }
 return 0;
}

'Code > Algorism' 카테고리의 다른 글

[ALGORISM]poj 1218  (0) 2011.09.03
[ALGORISM]poj 1298  (0) 2011.09.03
[ALGORISM]poj 1077  (0) 2011.09.03
[ALGORISM]poj 1163  (0) 2011.09.03
[ALGORISM]poj 1003  (0) 2011.09.03
Posted by I_co
2011. 9. 3. 14:46


//http://poj.org/problem?id=1077
//Eight
//daun

#include <iostream>
#include <conio.h>
#include <winsock2.h>
#include <time.h>
#include <stdio.h>

using namespace std;

enum {BLACK,D_BLUE,D_GREEN,D_SKYBLUE,D_RED,D_VIOLET,D_YELLOW,GRAY,D_GRAY,BLUE,GREEN,SKYBLUE,RED,VIOLET,YELLOW,WHITE,};


void exchange(int *pa, int *pb);
void show(int[][4]);
void SetColor(int backcolor, int fontcolor);
int answer(int arr[][4]);
void start(int *pa, int *pb, int arr[][4]);

int main()
{
 srand(time(NULL));

 system("color F0");
 char type;
 int arr[4][4] = {0};
 int x =0, y=0 ;
 
 start(&x,&y,arr);


 while(1)
 {
  SetColor(WHITE,VIOLET);
  cout <<"\n\n UP : U or u, DOWN : J or j, RIGHT : K or k, LEFT : H or h"<<endl;
  cout <<"\nIf you want to quit, Press the Z or z \n\n"<<endl;
  show(arr);
  switch(type=getch())
  {
  case 'U':
  case 'u':
   if((x-1)>=0)
    exchange(&arr[x][y],&arr[x--][y]);
   else
   {
    SetColor(WHITE,RED);
    cout <<"\nCan't move"<<endl;
   }
   break;
  case 'J':
  case 'j':
   if((x+1)<=3)
    exchange(&arr[x][y],&arr[x++][y]);
   else
   {
    SetColor(WHITE,RED);
    cout<<"\nCan't move"<<endl;
   }
   break;
   case 'K':
   case 'k':
   if((y+1)<=3)
    exchange(&arr[x][y],&arr[x][y++]);
   else
   {
    SetColor(WHITE,RED);
    cout<<"\nCan't move"<<endl;
   }
   break;
  case 'H':
  case 'h':
   if((y-1)>=0)
    exchange(&arr[x][y],&arr[x][y--]);
   else
   {
    SetColor(WHITE,RED);
    cout<<"\nCan't move"<<endl;
   }
   break;
  case 'z':
  case 'Z':
   return 0;
  default:
   SetColor(WHITE,RED);
   cout<<"\nYou press wrong key"<<endl;
  }
  if(answer(arr)==16)
  {
   cout<<"Enswer!!!";
   return 0;
  }
    Sleep(10);
   system("cls");

  
 }


 return 0;

}
void exchange(int *pa, int *pb)
{
 int temp;
 temp = *pa;
 *pa = *pb;
 *pb = temp;
}

void show(int arr[][4])
{
 SetColor(WHITE,BLACK);
 for(int a = 0; a < 4 ; a++)
 {
  for(int b = 0 ; b <4 ; b++)
  {
   if(arr[a][b]==16)
    cout<< 'X' <<"\t";
   else
    cout << arr[a][b] << "\t";
  }
  cout << endl;
 }
}

void SetColor(int backcolor, int fontcolor)
{
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), backcolor*16+fontcolor);
}

int answer(int arr[][4])
{
 int count=1;
 for(int a = 0 ; a < 4; a++)
  for(int b = 0; b<4 ; b++)
   if(arr[a][b]==count)
    count++;

 return count;

}

void start(int *pa, int *pb, int arr[][4])
{
  for(int i = 1 ; i < 17; i++)
 {
  while(1)
  {
   *pa = rand()%4;
   *pb = rand()%4;

   if(arr[*pa][*pb])
    continue;

   arr[*pa][*pb]=i;
   break;
  }
 }
}

'Code > Algorism' 카테고리의 다른 글

[ALGORISM]poj 1298  (0) 2011.09.03
[ALGORISM]poj 2853  (0) 2011.09.03
[ALGORISM]poj 1163  (0) 2011.09.03
[ALGORISM]poj 1003  (0) 2011.09.03
[ALGORISM] poj 3085  (0) 2011.09.03
Posted by I_co