国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言實現紙牌計算24點小游戲

2020-01-26 13:23:43
字體:
來源:轉載
供稿:網友

利用系統時間設定隨機種子生成4個隨機數,并對4個數字之間的運算次序以及運算符號進行枚舉,從而計算判斷是否能得出24,以達到程序目的。程序主要功能已完成,目前還有部分細節未處理,待完成ing...對于代碼中的錯誤,懇請批評指正。

游戲描述:

  A-10:分別代表數字 1-10。
  J,Q,K:均代表數字1。
  考慮到部分地方的規則,J,Q,K 也可以當成10 ,或者直接代表本身所代表的數字,即11、12、13來運算。
  使用加減乘除,能得出24者為贏,存在無解情況。
  游戲開始得分為1000分,每一秒鐘減少1分,當答對一次時,分數增加100分。(暫未實現)

代碼展示:

/* * * Project : 計算24  *  * Date : 2015年3月25日10:55:47  * * Remark :紙牌中的10以0代替,減法得數均為正數  */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h>  char getPokerCard(int value) {  if(value==1)  {   return 'A';  } else if(value<10) {  return value+'0'; } else if(value==10) {  return '0'; } else if(value==11) {  return 'J'; } else if(value==12) {  return 'Q'; } else if(value==13) {  return 'K'; } }  void printAnswer(int flag,int *poker,char *oper,char *answer) {  char a=getPokerCard(poker[0]);  char b=getPokerCard(poker[1]);  char c=getPokerCard(poker[2]);  char d=getPokerCard(poker[3]);    switch(flag)  {   //1.((A*B)*C)*D   case 1:    printf("((%c%c%c)%c%c)%c%c/n",a,oper[0],b,oper[1],c,oper[2],d);    break;   //2.(A*(B*C))*D   case 2:    printf("(%c%c(%c%c%c))%c%c/n",a,oper[0],b,oper[1],c,oper[2],d);    break;   //3.(A*B)*(C*D)   case 3:    printf("(%c%c%c)%c(%c%c%c)/n",a,oper[0],b,oper[1],c,oper[2],d);    break;   //4.A*(B*(C*D))   case 4:    printf("%c%c(%c%c(%c%c%c))/n",a,oper[0],b,oper[1],c,oper[2],d);    break;   //5.A*((B*C)*D)    case 5:    printf("%c%c((%c%c%c)%c%c)/n",a,oper[0],b,oper[1],c,oper[2],d);    break;   default:    break;  }    //存儲answer      return ;  }  double getValue(double num1,double num2,char oper) {  double result;    switch(oper)  {   case '+':   result=num1+num2;   break;  case '-':   result=fabs(num1-num2);   break;  case '*':   result=num1*num2;   break;  case '/':   result=num1/num2;   break;  default :   break;  }    return result; }  int getResult(int *poker,char *oper,char *answer) {  double t;  //將計算值取到   int a=poker[0]>10?1:poker[0];  int b=poker[1]>10?1:poker[1];  int c=poker[2]>10?1:poker[2];  int d=poker[3]>10?1:poker[3];    //窮舉運算次序 //1.((A*B)*C)*D t=0; t=getValue(a,b,oper[0]); t=getValue(t,c,oper[1]); t=getValue(t,d,oper[2]);  if(fabs(t-24)<0.0001) {  printAnswer(1,poker,oper,answer);  return 1; }  //2.(A*(B*C))*D t=0; t=getValue(b,c,oper[1]); t=getValue(a,t,oper[0]); t=getValue(t,d,oper[2]);  if(fabs(t-24)<0.0001) {  printAnswer(2,poker,oper,answer);  return 1; }  //3.(A*B)*(C*D) t=0; t=getValue(getValue(a,b,oper[0]),getValue(c,d,oper[2]),oper[1]);  if(fabs(t-24)<0.0001) {  printAnswer(3,poker,oper,answer);  return 1; }  //4.A*(B*(C*D)) t=0; t=getValue(c,d,oper[2]); t=getValue(b,t,oper[1]); t=getValue(a,t,oper[0]);  if(fabs(t-24)<0.0001) {  printAnswer(4,poker,oper,answer);  return 1; }  //5.A*((B*C)*D)  t=0;  t=getValue(b,c,oper[1]); t=getValue(t,d,oper[2]); t=getValue(a,t,oper[0]);  if(fabs(t-24)<0.0001) {  printAnswer(5,poker,oper,answer);  return 1; }   return 0; }  void printResult(int *poker,char *answer) {  char OperKey[4]={'+','-','*','/'};  char oper[3];  int i,j,k;  int count=0;    for(i=0;i<4;i++)  for(j=0;j<4;j++)  for(k=0;k<4;k++)  {   oper[0]=OperKey[i];   oper[1]=OperKey[j];   oper[2]=OperKey[k];      if(getResult(poker,oper,answer))   count++;  }  if(count)  {   printf("共%d種解法/n",count);  }  else  {   printf("該情況無解/n");  }    return ; }  void printPoker(int *poker) {   int i;  for(i=0;i<4;i++)  {   printf("%c ",getPokerCard(poker[i]));  }  printf("/n");    return ; }  void getRandomPokers(int *poker) {  int i;    //利用系統時間作為種子產生隨機數 ,函數srand(),rand()=>stdlib.h ,函數time()=>time.h  srand((unsigned)time(NULL)); for(i=0;i<4;i++) {  poker[i]=rand()%12+1; }  return ;  }  main() {   int poker[4]; char answer[20];  char c;    printf("紙牌計算24點/n--------------------------------------------/n");  do  {   //生成隨機紙牌    getRandomPokers(poker);      printf("隨機生成的紙牌為:/n");   //輸出生成的紙牌    printPoker(poker);      printf("/n任意鍵獲得結果.../n");   getchar();       //輸出計算結果   printResult(poker,answer);      printf("/n回車鍵繼續,其他鍵并回車退出.../n");   c=getchar();      printf("--------------------------------------------/n");  }  while(c=='/n');    return 0; }

效果展示

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 玉林市| 西充县| 登封市| 德钦县| 开原市| 正定县| 安乡县| 承德市| 长岛县| 蓝田县| 清河县| 稷山县| 高唐县| 泸定县| 泽库县| 精河县| 沈阳市| 阜新市| 扬中市| 乐陵市| 彝良县| 永定县| 特克斯县| 南川市| 富裕县| 武宣县| 乌鲁木齐县| 东乌珠穆沁旗| 伽师县| 张家川| 桦川县| 荣成市| 合川市| 建水县| 大余县| 融水| 平阴县| 佛学| 岱山县| 安义县| 皋兰县|