导航:首页 > 编程语言 > 一个简单游戏的编程

一个简单游戏的编程

发布时间:2024-04-02 10:43:01

A. 姹傚嚑C璇瑷涓灏忔父鎴忎唬镰侊纴绠鍗旷殑锛岃佹敞閲娿併佽阿璋浜嗐

// Calcu24.cpp : Defines the entry point for the console application.
//
/*
6-6
24镣规父鎴
*/
#include "conio.h"
#include "stdlib.h"
#include "time.h"
#include "math.h"
#include "string.h"/*
浠庝竴鍓镓戝厠鐗屼腑锛屼换鍙4寮犮
2-10 鎸夊叾镣规暟璁$畻(涓轰简琛ㄧず鏂逛究10鐢═琛ㄧず)锛孞,Q,K,A 缁熶竴鎸 1 璁$畻
瑕佹眰阃氲繃锷犲噺涔橀櫎锲涘垯杩愮畻寰楀埌鏁板瓧 24銆
链绋嫔簭鍙浠ラ殢链烘娊鍙栫焊鐗岋纴骞剁敤璇曟帰娉曟眰瑙c
*/void GivePuzzle(char* buf)
{
char card[] = {'A','2','3','4','5','6','7','8','9','T','J','Q','K'}; for(int i=0; i<4; i++){
buf[i] = card[rand() % 13];
}
}
void shuffle(char * buf)
{
for(int i=0; i<5; i++){
int k = rand() % 4;
char t = buf[k];
buf[k] = buf[0];
buf[0] = t;
}
}
int GetCardValue(int c)
{
if(c=='T') return 10;
if(c>='0' && c<='9') return c - '0';
return 1;
}
char GetOper(int n)
{
switch(n)
{
case 0:
return '+';
case 1:
return '-';
case 2:
return '*';
case 3:
return '/';
} return ' ';
}double MyCalcu(double op1, double op2, int oper)
{
switch(oper)
{
case 0:
return op1 + op2;
case 1:
return op1 - op2;
case 2:
return op1 * op2;
case 3:
if(fabs(op2)>0.0001)
return op1 / op2;
else
return 100000;
} return 0;
}
void MakeAnswer(char* answer, int type, char* question, int* oper)
{
char p[4][3];
for(int i=0; i<4; i++)
{
if( question[i] == 'T' )
strcpy(p[i], "10");
else
sprintf(p[i], "%c", question[i]);
}

switch(type)
{
case 0:
sprintf(answer, "%s %c (%s %c (%s %c %s))",
p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);
break;
case 1:
sprintf(answer, "%s %c ((%s %c %s) %c %s)",
p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);
break;
case 2:
sprintf(answer, "(%s %c %s) %c (%s %c %s)",
p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);
break;
case 3:
sprintf(answer, "((%s %c %s) %c %s) %c %s",
p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);
break;
case 4:
sprintf(answer, "(%s %c (%s %c %s)) %c %s",
p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);
break;
}
}
bool TestResolve(char* question, int* oper, char* answer)
{
// 绛夊緟钥幂敓瀹屾垚
int type[5]={0,1,2,3,4};//璁$畻绫诲瀷
double p[4];
double sum=0;
//
for(int i=0; i<4; i++) //寰鐜鍙栧缑镣规暟
{
p[i]=GetCardValue(int(question[i]));
} for(i=0;i<5;i++)
{
MakeAnswer(answer,type[i],question,oper); //銮峰彇鍙鑳界殑绛旀
switch(type[i])
{
case 0:
sum=MyCalcu(p[0],MyCalcu( p[1],MyCalcu(p[2], p[3], oper[2]),oper[1]),oper[0]); //A*(B*(c*D))
break;
case 1:
sum=MyCalcu(p[0],MyCalcu(MyCalcu(p[1], p[2], oper[1]),p[3],oper[2]),oper[0]); //A*((B*C)*D)
break;
case 2:
sum=MyCalcu(MyCalcu(p[0], p[1], oper[0]),MyCalcu(p[2], p[3], oper[2]),oper[1]); // (A*B)*(C*D)
break;
case 3:
sum=MyCalcu(MyCalcu(MyCalcu(p[0], p[1], oper[0]),p[2],oper[1]),p[3],oper[2]); //((A*B)*C)*D
break;
case 4:
sum=MyCalcu(MyCalcu(p[0],MyCalcu(p[1], p[2], oper[1]),oper[0]),p[3],oper[2]); //(A*(B*C))*D
break;
}
if(sum==24) return true;
}
return false;
}
/*
閲囩敤闅忔満璇曟帰娉曪细灏辨槸阃氲繃闅忔満鏁板瓧浜х敓 锷犲噺涔橀櫎镄 缁勫悎锛岄氲繃澶ч噺镄勬祴璇曟潵锻戒腑镄勮В娉
鎻愮ず锛
1. 闇瑕佽冭槛鐢ㄦ嫭鍙锋带鍒惰$畻娆″簭镄勯梾棰 姣斿傦细( 10 - 4 ) * ( 3 + A ), 瀹为檯涓婅$畻娆″簭镄勬暟鐩鏄链夐檺镄勶细
A*(B*(c*D))
A*((B*C)*D)
(A*B)*(C*D)
((A*B)*C)*D
(A*(B*C))*D
2. 闇瑕佽冭槛璁$畻缁撴灉涓哄垎鏁扮殑𨱍呭喌锛( 3 + (3 / 7) ) * 7
3. 棰樼洰涓鐗岀殑浣岖疆鍙浠ヤ换镒忎氦鎹
*/
bool TryResolve(char* question, char* answer)
{
int oper[3]; // 瀛桦偍杩愮畻绗︼纴0:锷犳硶 1:鍑忔硶 2:涔樻硶 3:闄ゆ硶
for(int i=0; i<1000 * 1000; i++)
{
// 镓扑贡绾哥墝椤哄簭
shuffle(question);

// 闅忔満浜х敓杩愮畻绗
for(int j=0; j<3; j++)
oper[j] = rand() % 4; if( TestResolve(question, oper, answer) ) return true;
} return false;
}
int main(int argc, char* argv[])
{
// 鍒濆嫔寲闅忔満绉嶅瓙
srand( (unsigned)time( NULL ) ); char buf1[4]; // 棰樼洰
char buf2[30]; // 瑙g瓟
printf("***************************\n");
printf("璁$畻24\n");
printf("A J Q K 鍧囨寜1璁$畻锛屽叾瀹冩寜鐗岀偣璁$畻\n");
printf("鐩镙囨槸锛氶氲繃锲涘垯杩愮畻缁勫悎鍑虹粨鏋滐细24\n");
printf("***************************\n\n");
for(;;)
{
GivePuzzle(buf1); // 鍑洪
printf("棰樼洰锛");
for(int j=0; j<4; j++){
if( buf1[j] == 'T' )
printf("10 ");
else
printf("%c ", buf1[j]);
} printf("\n鎸変换镒忛敭鍙傝幂瓟妗...\n");
getch(); if( TryResolve(buf1, buf2) ) // 瑙i
printf("鍙傝冿细%s\n", buf2);
else
printf("鍙鑳芥槸镞犺В...\n"); printf("鎸変换镒忛敭鍑轰笅涓棰樼洰锛寈 阌阃鍑...\n");
if( getch() == 'x' ) break;
} return 0;
}

阅读全文

与一个简单游戏的编程相关的资料

热点内容
疫情命令照片 浏览:95
画世界的app叫什么 浏览:824
vc6编译时显示无法执行 浏览:547
java动态初始化数组 浏览:638
概率论与数理统计答案pdf 浏览:681
得物app上面的鞋为什么这么贵 浏览:909
如何从爱思服务器注销游戏账号 浏览:944
幼儿编程教育培训多少钱 浏览:406
经常生气有什么东西能解压 浏览:903
代理服务器地址和端口可以怎么填 浏览:65
unity5手游编译模型 浏览:268
安卓无人机app源码 浏览:811
pl1编程语言 浏览:801
台达plc编程换算指令大全 浏览:176
手机上的编程游戏 浏览:110
服务器密码机有什么用 浏览:479
dos磁盘命令 浏览:957
单片机cpu52的功能 浏览:693
opc服务器怎么开发 浏览:375
觅喜是个什么app 浏览:405