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

求C语言经典三角程序

答案:貌似我的这个游戏包含了一些三角概念,可以看看。

比如扫雷的思维和五子棋的矩阵

代码如下:

 

#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#define N 19

int i,j,k,size=N;
int isBlack=1;//当前是黑方下子    isBlack=1  若为白方下子  isBlack=0
char state[N][N];
char x,y,temp[10];
char c;       //用来存放显示黑白子的变量
void printState();

void startGame()
{
 //printf("\n潇洒易做图提示:此功能待开发...\n");
 //当前初始化面板。
 for(i=0;i<size;i++)
 {
  for(j=0;j<size;j++)
  {
   state[i][j]='*';
  }
 }
 printState();
 while(1)
 {
  printf("\n\t请%s方下子:",isBlack?"黑":"白");
  fflush(stdin);
  scanf("%s",temp);
  if(!strcmp(strupr(temp),"OUT"))    //如果在下的过程中输入OUT的话就返回主菜单
  {
   system("cls");
   return;
  }
  if(!strcmp(temp,"BACK"))   //悔棋... BACK
  {
   i=x-'A';      //这里i和j承担过循环控制变量!需要重新初始化
   j=y-'A';
   state[i][j]='*';
   printState();
   printf("\t    观棋不语真君子,落子不悔大丈夫!\n");
   isBlack=!isBlack;
   continue;
  }
  if(!strcmp(temp,"LOSE"))           //认输... LOSE
  {
   printf("\n\t潇洒易做图提示:%s方认输,%s方胜!\n\n",isBlack?"黑":"白",isBlack?"白":"黑");
   return;
  }
  x=temp[0];                         //取前两个字符做处理。
  y=temp[1];
  
  if(x<'A'||x>'S'||y<'A'||y>'S')     //避免下面相减的数组越界。
  {
   printf("\t输入有误,请输入属于<A-S>或正确的口令。\n");
   continue;
  }
  i=x-'A';       //相减得到的差量正好是数组对应的元素
  j=y-'A';
  if(state[i][j]!='*'){               //该位置已经有子
   printf("\t提示:该位置已经有子,请重新指定坐标!");
   continue;
  }
  c=isBlack?'1':'2';
  state[i][j]=c;                      //设置坐标子为当前下定子
  printState();                       //显示当前棋盘
  
  //检查是否获胜。   待续...   第二阶段完毕!
  
   isBlack=!isBlack;
 }
}
 
void help()
{
 system("cls");
 printf("\n潇洒易做图关于本程序说明:\n\n");
 printf("\t考虑到C语言图形用户界面的难度。\n\n");
 printf("\t本程序采用19*19的游戏格式\n\n");
 printf("\t输入格子的坐标下子: 先横坐标后纵坐标。比如输入:GG\n\n");
 printf("\t在游戏中有外挂:out(退回主菜单)、back(悔棋)、lose(认输)\n\n");
 printf("\n程序棋盘(网上信息) :\n");
 printf("\n    与围棋的棋盘一样。\n\n");
 printf("基本规则 : \n\n   1) 黑先、白后,从天元开始相互顺序落子。\n\n   ");
 printf("2) 白棋第一手应在天元为界自己一侧布子,之后双方可任意行子。\n\n   ");
 printf("3) 最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。\n\n   ");
 printf("4) 黑棋禁手判负、白棋无禁手。");
 printf("黑棋禁手包括“三、三” “四、四” “长连”。黑方只能“四、三”胜。\n\n   ");
 printf("5) 如分不出胜负,则定为平局。\n\n   ");
 printf("6) 对局中中途退场均判为负。\n\n   ");
 printf("7) 五连与禁手同时形成,先五为胜。\n\n");
 printf("棋型说明 : \n\n   ");
 printf("1) 长连:在一条直线或斜线上,连续下成五个以上的棋型\n\n   ");
 printf("2) 活三:在一条直线或斜线上,由三个子构成的,必须防守否则将成为“活四”");
 printf("导致速胜的棋型。三只有下面两种棋型结构:\n\n   ");
 printf("3) 活四:指在一条直线或斜线上,由连续的四个字所构成的,");
 printf("无论对方怎样防守,只要再走一手棋将必定成为五连的棋型:\n\n   ");
 printf("4) 四:在一条直线或斜线上,由四个同色子构成的,");
 printf("必须防守否则下一步立刻成为“五连”导致速胜的棋型。活四也是四之一。\n\n");
 printf("特殊规则 : \n\n   ");
 printf("黑棋先行的优势很大。因此,在五子棋中,对黑棋做了禁手限制。\n\n   ");
 printf("禁手:对局中禁止使用的着法,黑棋禁手包括“三三禁手”");
 printf("“四四禁手”和“长连禁手”,白棋无禁手。\n\n");
 printf("禁手的判断 : \n\n   ");
 printf("1) 长连禁手:当黑棋走一步棋,形成长连棋型,则此点为“禁手”\n\n   ");
 printf("2) 三三禁手:当黑棋走一步棋,同时形成两个或");
 printf("两个以上的“活三”且没有形成“五连”时,那一步棋就是黑棋禁手。\n\n   ");
 printf("3) 四四禁手:当黑棋走一步棋,同时形成两个或");
 printf("两个以上的“四”且没有形成“五连”时,那一步棋就是黑棋禁手。\n\n");
 printf("胜负判断 : \n\n");
 printf("胜局 :\n\n   ");
 printf("1) 最先在棋盘上形成五连,并得到系统认可的一方为胜。白棋长连视同五连。\n\n   ");
 printf("2) 黑方五连与禁手同时形成,禁手失效,黑方胜。\n\n   ");
 printf("3) 黑方易做图形成禁手,黑方输。\n\n   ");
 printf("4) 对局中,一方出现下列情况之一,系统判对方胜。\n\n   ");
 printf("(1)超过规定时限者;\n\n   ");
 printf("(2)一方宣布认输者;\n\n   ");
 printf("(3)中途退出比赛者即逃跑者。\n\n");
 printf("和局 :\n\n   ");
 printf("1)对局双方一致同意和棋。\n\n   ");
 printf("2)对局双方同一回合均放弃行棋权。\n\n   ");
 printf("3)全盘均下满,已无空白交叉点。\n\n");
 printf("提和 :\n\n   ");
 printf("1)欲提和者应在自己下着前提出。\n\n   ");
 printf("2)一方提和,对方可对提和建议表示同意,也可以拒绝。\n\n   ");
 printf("3)在一局中,一方提和次数不能超过对方三次\n\n");
printf("选材说明地址:中国游戏中心\n( http://www.chinagames.net/chinagames/2008-11/12/content_492703.htm)\n\n");
 printf("\t\t\t说明完毕...\n\n   ");
}

void aboutThanks()
{
 system("cls");
 printf("\n   易做图鸣谢:\n\t1.我的C语言老师:叶煜老师。");
 printf("\n\t2.成都金海洋教育。");
 printf("\n\t3.所有关心我的兄弟姐妹。\n\n");
}

int main()
{
 system("color f1");
 while(1)
 {
  printf("\n\t-----潇洒易做图五子棋C语言练习-----\n\n");
  printf("\t\t  1.开始游戏。\n");
  printf("\t\t  2.游戏说明。\n");
  printf("\t\t  3.游戏鸣谢。\n");
  printf("\t\t  4.退出程序。\n");
  printf("\n\t请选择:");
   L:k=scanf("%d",&i);
  if(k==0)                         &n

上一个:c语言中的时钟问题
下一个:介绍下c语言的发展史?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,