当前位置:编程学习 > C/C++ >>

用c语言编写一个可以用鼠标控制的五子棋程序

答案:#include<ctype.h>
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<ctype.h>
#include<bios.h>
#define SHURU 1
#define FANGXIANG 2
#define WUXIAO 0
#define TUICHU 3
/****************************************************/
static int ii=0,jj=0,wanjia=1;
/****************************************************/
void hqp(int a[][20],int y);
int anjian(char an);
int panduan(int a[][20]);
void pingmu(void);
void guangbiaoyd(char an);
void jh(int a[][20]);
/****************************************************/
void main()
{
  int a[20][20]={0},tuichu=0,ying;
  char an;
  hqp(a,0);
  pingmu();
  while(1)
  {
  ying=panduan(a);
  if(ying!=0)
  hqp(a,ying);
  an=getch();
  switch(anjian(an))
  {
    case TUICHU:clrscr();
  tuichu=1;
  break;
    case FANGXIANG:guangbiaoyd(an);
  break;
    case SHURU: switch(ying)
  {
   case 1:hqp(a,1);tuichu=1;break;
   case 2:hqp(a,2);tuichu=1;break;
   case 0:jh(a);break;
  }
  break;
    case WUXIAO:break;
  }
  hqp(a,0);
  pingmu();
  if(tuichu==1)
  break;
  }
}
/****************************************************/
void hqp(int a[][20],int y)
{
  int i,j;
  clrscr();
  if(y!=0)
  {
    textcolor(RED);
    printf("WAN JIA %d SHENG LI! ! ! ! ! \n",y);
  }
  for(i=0;i<20;i++)
  {
    for(j=0;j<20;j++)
    {
      switch(a[i][j])
      {
case 1: textcolor(YELLOW);
  putch('X');
  break;
case 2: textcolor(BLUE);
  putch('0');
  break;
case 0: textcolor(GREEN);
  if(j==0)
   {
    if(i==0)
     {
       putch(0xda);
       break;
     }
    if(i==19)
     {
       putch(0xc0);
       break;
     }
     putch(0xc3);
     break;
   }
   if(j==19)
   {
    if(i==0)
    {
      putch(0xbf);
      break;
    }
    if(i==19)
    {
      putch(0xd9);
      break;
    }
     putch(0xb4);
     break;
   }
   if(i==0&&j!=0&&j!=19)
   {
     putch(0xc2);
     break;
   }
   if(i==19&&j!=0&&j!=19)
   {
     putch(0xc1);
     break;
   }
   putch(0xc5);
   break;
      }
    }
    printf("\n");
  }
}
/*****************************************************************/
int anjian(char an)
{
  if(an==32||an==13)
  return(SHURU);
  else
  if(an=='a'||an=='w'||an=='s'||an=='d'||
  an=='j'||an=='i'||an=='k'||an=='l')
  return(FANGXIANG);
  else
  if(an==27)
  return(TUICHU);
  else
  return(WUXIAO);
}
/******************************************************************/
int panduan(int a[][20])
{
  int i,j;
      for(i=0;i<20;i++)
      {
for(j=0;j<15;j++)
{
   if(a[i][j]==1&&a[i][j+1]==1&&a[i][j+2]==1&&a[i][j+3]==1&&a[i][j+4]==1)
   return(1);
   else
   if(a[i][j]==2&&a[i][j+1]==2&&a[i][j+2]==2&&a[i][j+3]==2&&a[i][j+4]==2)
   return(2);
}
      }
      for(i=0;i<15;i++)
      {
for(j=0;j<20;j++)
{
   if(a[i][j]==1&&a[i+1][j]==1&&a[i+2][j]==1&&a[i+3][j]==1&&a[i+4][j]==1)
   return(1);
   else
   if(a[i][j]==2&&a[i+1][j]==2&&a[i+2][j]==2&&a[i+3][j]==2&&a[i+4][j]==2)
   return(2);
}
      }
      for(i=0;i<15;i++)
      {
for(j=0;j<15;j++)
{
   if(a[i][j]==1&&a[i+1][j+1]==1&&a[i+2][j+2]==1&&a[i+3][j+3]==1&&a[i+4][j+4]==1)
   return(1);
   else
   if(a[i][j]==2&&a[i+1][j+1]==2&&a[i+2][j+2]==2&&a[i+3][j+3]==2&&a[i+4][j+4]==2)
   return(2);
}
      }
      for(i=4;i<20;i++)
      {
       for(j=4;j<20;j++)
       {
  if(a[i][j]==1&&a[i-1][j-1]==1&&a[i-2][j-2]==1&&a[i-3][j-3]==1&&a[i-4][j-4]==1)
  return(1);
  else
  if(a[i][j]==2&&a[i-1][j-1]==2&&a[i-2][j-2]==2&&a[i-3][j-3]==2&&a[i-4][j-4]==2)
  return(2);
       }
      }
   return(0);

}
/**************************************************************************/
void pingmu(void)
{
int i,j;
char *Msg[]=
{
"Wan Jia1 an jian:",
" shang:        w",
" xia:          s",
" zuo:          a",
" you:          d",
" fang zi:  space",
"",
"Wan Jia2 an jian:",
" shang:        i",
" xia:          k",
" zuo:          j",
" you:          l",
" fang zi:  ENTER",
"tui chu:",
" ESC\n",
NULL,
};
i=0;
textcolor(RED);
while(Msg[i]!=NULL)
{
gotoxy(25,3+i);
cputs(Msg[i]);
i++;
}
gotoxy(25,20);
printf("\nqing wan jia %d chu ru:",wanjia);
gotoxy(jj+1,ii+1);
}
/**********************************************************************/
void guangbiaoyd(char an)
{
  if(wanjia==1)
  {
   switch(an)
   {
    case 'a': jj--;break;
    case 'd': jj++;break;
    case 'w': ii--;break;
    case 's': ii++;break;
   }
  }
  else
  {
   switch(an)
   {
    case 'j': jj--;break;
    case 'l': jj++;break;
    case 'i': ii--;break;
    case 'k': ii++;break;
   }
  }
  if(ii<0)
  ii++;
  if(ii>19)
  ii--;
  if(jj<0)
  jj++;
  if(jj>19)
  jj--;
  gotoxy(ii+1,jj+1);<

上一个:急急急!求C语言的数据结构二叉树递归遍历程序!
下一个:Delphi和C++(或者说pascal和C语言)哪个比较好?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,