求几C语言个小游戏代码,简单的,要注释、、谢谢了、
可以说个大概方向吗?
光说1000行,要做什么都不知道。
是什么管理系统?
还是什么算法设计?
还是解决一个什么经典问题?
1000行,就Visual C++6.0的基于MFC的应用程序框架,自动生成的代码都不止1000行!!!
书上不是有么
// 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用T表示),J,Q,K,A 统一按 1 计算
要求通过加减乘除四则运算得到数字 24。
本程序可以随机抽取纸牌,并用试探法求解。
*/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]; // 解答
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) ) // 解题
printf("参考:%s\n", buf2);
else
printf("可能是无解...\n"); printf("按任意键出下一题目,x 键退出...\n");
if( getch() == 'x' ) break;
} return 0;
}
//这是一个显示方格的小程序,小方格可一左右移动的,可以按A键、D键、方向键,按n
//时则退出程序。这个程序整体很简单你看一会就能明白了,上下移动还没弄好。
#include<stdio.h>
void main(){
int i,keyCount=0;
int n=196,e=179,wu=218,eu=191,wd=192,ed=217; //定义方格边框
char move='';
while(1){
move=getch();
if(move==0)
move=getch();
if(move=='n')
break;
if((move=='a'||move=='A'||move==75)&&keyCount>0)
keyCount--;
if((move=='d'||move=='D'||move==77)&&keyCount<76)
keyCount++;
printf("--------------------------------------------\n"); //线条打印
printf("Press \'a\' the square move left ,\n and press \'d\' the square move right!\nPress \'n\' to exit!\n"); //打印说明
printf("--------------------------------------------\n");
for(i=1;i<=16;i++)
printf("\n");
for(i=1;i<=keyCount;i++)
printf(" ");
printf("%c%c%c\n",wu,n,eu); //打印上边框
for(i=1;i<=keyCount;i++)
printf(" ");
printf("%c %c\n",e,e) ; //打印中间边框
for(i=1;i<=keyCount;i++)
printf(" ");
printf("%c%c%c\n",wd,n,ed); //打印底边框
}
}
用c语言编写一个小软件或者小游戏,该编写什么呢?求出个主意,最好是不...
c写的迷宫小游戏,挺好的,希望对你有帮助 include "stdafx.h"include<stdlib.h> include<conio.h> void shuatu(int i,int j,char a[11][11],int x,int y);char b[4]="■";char c=' ';char d[4]="☆";int x,y;int main(int argc, char* argv[]){ char a[11][11]= {...
c语言剪刀石头布小游戏
include <stdio.h> include <stdlib.h> include int main(){ char m;\/\/表示选择的是哪个人 int a,b;\/\/分别表示人和电脑 printf("(J)iandao, (S)hitou, hu(B)u :\\n");scanf("%c",&m);if(m!='J' && m!='S' && m!='B')printf("Input error!\\n");else\/\/分别用0,1...
c语言程序设计实验报告80~100行,关于一种小游戏的,语句简单些,
include <stdio.h> include <stdlib.h> include <conio.h> define MAX_PARKING_SIZE 10\/\/停车场最大停车数量 define PRIZE 10.00\/\/停留每小时单价 define true 1 define false 0 typedef struct stack { long pos[MAX_PARKING_SIZE];\/\/存储车牌号码 int time[MAX_PARKING_SIZE];\/\/存储进入车站...
c语言小游戏代码
以下是一个基础的贪吃蛇游戏的C语言代码实现,它包含了游戏的主要函数和逻辑,如蛇的移动、画蛇、随机生成苹果、等级系统等。首先,定义了几个关键变量,如蛇的位置(Snake数组)、蛇头的方向(Sna_Hea_Dir)、蛇的长度(Snake_Len)等。然后,有函数如Print_Snake()用于绘制蛇的形状,Move_Snake()负责蛇的...
求一些C语言小游戏的源代码,谢谢
“推箱子”C代码:include <stdio.h> include <conio.h> include<stdlib.h> include<windows.h> int m =0; \/\/m代表第几关 struct maps{short a[9][11]; };struct maps map[5]={ 0,0,0,0,0,0,0,0,0,0,0, \/\/共5关,每关9行11列 0,1,1,1,1,1,1,1,0,0,0,0,1,...
请用C语言根据下面的数学魔术原理编写一个小游戏。
这个程序我昨晚就搞定了,结果掉线上不成网没贴上来,等我早上起来就给你回答。搞定。include<stdio.h> define N 16 main(){ int i;int j;char ch;int number=0;int a[5][N]={{1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31},{2,3,6,7,10,11,14,15,18,19,22,23,26,...
关于用C语言编写的小游戏的游戏代码,如黑白棋贪吃蛇等
关于用C语言编写的小游戏的游戏代码,如黑白棋贪吃蛇等 希望能在C语言环境下运行不是C++,程序尽量简单,万分感谢... 希望能在C语言环境下运行不是C++,程序尽量简单,万分感谢 展开 我来答 1个回答 #热议# 电视剧《王牌部队》有哪些槽点?匿名用户 2013-07-26 展开全部 我这儿有c语言的自写俄罗斯方块,...
C语言可以写哪些小游戏?
C语言可以编手机游戏. 你叫他去死 不过我这有 贪吃蛇的代码,你倒可以看看 (用TC 编译一定过)include include include include include define Enter 7181 define ESC 283 define UP 18432 define DOWN 20480 define LEFT 19200 define RIGHT 19712 ifdef __cplusplus define __CPPARGS ...else defin...
c语言小游戏代码
“贪吃蛇”C代码,在dev C++试验通过(用4个方向键控制) #include <stdio.h> #include <stdlib.h> #include <conio.h> #include #include <Windows.h> #define W 78 \/\/游戏框的宽,x轴 #define H 26 \/\/游戏框的高,y轴 int dir=3; \/\/方向变量,初值3表示向“左” int Flag=0; \/\/吃了食物的标...
求一个c语言制作的小游戏或者小软件,行数不小于600,挺急的
贪吃蛇代码 include <stdio.h> include <graphics.h> include <stdlib.h> include <dos.h> \/*引用的库函数*\/ define LEFT 0x4b00 define RIGHT 0x4d00 define DOWN 0x5000 define UP 0x4800 define ESC 0x011b\/*宏定义键名*\/ define N 200 int i,key;int level;\/*游戏等级*\/ int score...