c语言编程小游戏代码?用c语言编写一个小游戏
今天给各位分享c语言编程小游戏代码的知识,其中也会对用c语言编写一个小游戏进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
用C语言编写的小游戏代码是什么
“猜数字小游戏”,每个数字后按空格,最后按回车确认
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int a[4],b[4];
int count=0;//计算猜测次数
void csh();//初始化
void start();//开始游戏
int main()
{ csh();
start();
}
void csh()//初始化
{ printf("
猜数字小游戏
");
printf(“猜四个数字,如数字与顺序都正确记为A,数字正确位置不对记为B.
”);
}
void start()//开始游戏
{int m,n;//m是完全猜对的个数,n是顺序不对的个数
while(1)
{srand((unsigned)time(NULL));//初始化随机数发生器srand()
while(1){ for(int i=0;i<4;i++) a[i]=rand()%10;//rand()函数每次随机产生一个0-9的数
if((a[3]!=a[2]&&a[3]!=a[1]&&a[3]!=a[0])&&
(a[2]!=a[1]&&a[2]!=a[0])&&a[1]!=a[0]) break;}//4个随机数各自不相等
printf("请依次输入4个一位整数:
");
while(1)
{for(int i=0;i<4;i++) scanf(“%d”,&b[i]);
printf("你输入的是:%d%d%d%d",b[0],b[1],b[2],b[3]);
m=0;n=0;
for(int i=0;i<4;i++)
{for(int j=0;j<4;j++)
{ if(b[i]==a[j]&&i==j)m=m+1; if(b[i]==a[j]&&i!=j)n=n+1;}
}
count=count+1;
printf("%dA%dB你试了%d次
",m,n,count);
if(m==4)break;
if(count==8){ count=0; break;}
}
printf("
");
if(m==4)printf("你猜对了(^-^)!就是:%d%d%d%d
",a[0],a[1],a[2],a[3]);
else printf("你输了(T-T)!哈哈!应该是:%d%d%d%d
",a[0],a[1],a[2],a[3]);
int z;
printf("(要继续吗?1或0)
");
scanf(“%d”,&z);
if(z==0) break;
}
}
c语言小游戏代码
最基础的贪吃蛇的代码
#include<stdio.h>
#include<windows.h>//基本型态定义。支援型态定义函数。使用者界面函数图形装置界面函数。
#include<conio.h>//用户通过按键盘产生的对应操作(控制台)
#include<stdlib.h>
#include<time.h>//日期和时间头文件
#define LEN 30
#define WID 25
int Snake[LEN][WID]={0};//数组的元素代表蛇的各个部位
char Sna_Hea_Dir='a';//记录蛇头的移动方向
int Sna_Hea_X, Sna_Hea_Y;//记录蛇头的位置
int Snake_Len= 3;//记录蛇的长度
clock_t Now_Time;//记录当前时间,以便自动移动
int Wait_Time;//记录自动移动的时间间隔
int Eat_Apple= 1;//吃到苹果表示为1
int Level;
int All_Score=-1;
int Apple_Num=-1;
HANDLE hConsole= GetStdHandle(STD_OUTPUT_HANDLE);//获取标准输出的句柄<windows.h>
//句柄:标志应用程序中的不同对象和同类对象中的不同的实例方便操控,
void gotoxy(int x, int y)//设置光标位置
{
COORD pos={x,y};//定义一个字符在控制台屏幕上的坐标POS
SetConsoleCursorPosition(hConsole, pos);//定位光标位置的函数<windows.h>
}
void Hide_Cursor()//隐藏光标固定函数
{
CONSOLE_CURSOR_INFO cursor_info={1, 0};
SetConsoleCursorInfo(hConsole,&cursor_info);
}
void SetColor(int color)//设置颜色
{
SetConsoleTextAttribute(hConsole, color);
//是API设置字体颜色和背景色的函数格式:SetConsoleTextAttribute(句柄,颜色);
}
void Print_Snake()//打印蛇头和蛇的脖子和蛇尾
{
int iy, ix, color;
for(iy= 0; iy< WID;++iy)
for(ix= 0; ix< LEN;++ix)
{
if(Snake[ix][iy]== 1)//蛇头
{
SetColor(0xf);//oxf代表分配的内存地址 setcolor:34行自定义设置颜色的函数
gotoxy(ix*2, iy);
printf("※");
}
if(Snake[ix][iy]== 2)//蛇的脖子
{
color= rand()%15+ 1;//rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。
//头文件:stdlib.h
if(color== 14)
color-= rand()% 13+ 1;//变色
SetColor(color);
gotoxy(ix*2, iy);
printf("■");
}
if(Snake[ix][iy]== Snake_Len)
{
gotoxy(ix*2, iy);
SetColor(0xe);
printf("≈");
}
}
}
void Clear_Snake()//擦除贪吃蛇
{
int iy, ix;
for(iy= 0; iy< WID;++iy)
for(ix= 0; ix< LEN;++ix)
{
gotoxy(ix*2, iy);
if(Snake[ix][iy]== Snake_Len)
printf("");
}
}
void Rand_Apple()//随机产生苹果
{
int ix, iy;
do
{
ix= rand()% LEN;
iy= rand()% WID;
}while(Snake[ix][iy]);
Snake[ix][iy]=-1;
gotoxy(ix*2, iy);
printf("⊙");
Eat_Apple= 0;
}
void Game_Over()//蛇死掉了
{
gotoxy(30, 10);
printf("Game Over");
Sleep(3000);
system("pause> nul");
exit(0);
}
void Move_Snake()//让蛇动起来
{
int ix, iy;
for(ix= 0; ix< LEN;++ix)//先标记蛇头
for(iy= 0; iy< WID;++iy)
if(Snake[ix][iy]== 1)
{
switch(Sna_Hea_Dir)//根据新的蛇头方向标志蛇头
{
case'w':
if(iy== 0)
Game_Over();
else
Sna_Hea_Y= iy- 1;
Sna_Hea_X= ix;
break;
case's':
if(iy==(WID-1))
Game_Over();
else
Sna_Hea_Y= iy+ 1;
Sna_Hea_X= ix;
break;
case'a':
if(ix== 0)
Game_Over();
else
Sna_Hea_X= ix- 1;
Sna_Hea_Y= iy;
break;
case'd':
if(ix==(LEN- 1))
Game_Over();
else
Sna_Hea_X= ix+ 1;
Sna_Hea_Y= iy;
break;
default:
break;
}
}
if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1&&Snake[Sna_Hea_X][Sna_Hea_Y]!=0&&Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)
Game_Over();
if(Snake[Sna_Hea_X][Sna_Hea_Y]< 0)//吃到苹果
{
++Snake_Len;
Eat_Apple= 1;
}
for(ix= 0; ix< LEN;++ix)//处理蛇尾
for(iy= 0; iy< WID;++iy)
{
if(Snake[ix][iy]> 0)
{
if(Snake[ix][iy]!= Snake_Len)
Snake[ix][iy]+= 1;
else
Snake[ix][iy]= 0;
}
}
Snake[Sna_Hea_X][Sna_Hea_Y]= 1;//处理蛇头
}
void Get_Input()//控制蛇的移动方向
{
if(kbhit())
{
switch(getch())
{
case 87:
Sna_Hea_Dir='w';
break;
case 83:
Sna_Hea_Dir='s';
break;
case 65:
Sna_Hea_Dir='a';
break;
case 68:
Sna_Hea_Dir='d';
break;
default:
break;
}
}
if(clock()- Now_Time>= Wait_Time)//蛇到时间自动行走
{
Clear_Snake();
Move_Snake();
Print_Snake();
Now_Time= clock();
}
}
void Init()//初始化
{
system("title贪吃毛毛蛇");
system("mode con: cols=80 lines=25");
Hide_Cursor();
gotoxy(61, 4);
printf("You Score:");
gotoxy(61, 6);
printf("You Level:");
gotoxy(61, 8);
printf("The Lenght:");
gotoxy(61, 10);
printf("The Speed:");
gotoxy(61, 12);
printf("Apple Num:");
int i;
for(i= 0; i< Snake_Len;++i)//生成蛇
Snake[10+i][15]= i+1;
int iy, ix;//打印蛇
for(iy= 0; iy< WID;++iy)
for(ix= 0; ix< LEN;++ix)
{
if(Snake[ix][iy])
{
SetColor(Snake[ix][iy]);
gotoxy(ix*2, iy);
printf("■");
}
}
}
void Pri_News()//打印信息
{
SetColor(0xe);
gotoxy(73,4);
All_Score+= Level;
printf("%3d", All_Score);
gotoxy(73, 6);
printf("%3d", Level);
gotoxy(73, 8);
printf("%3d",Snake_Len);
gotoxy(73, 10);
printf("0.%3ds", Wait_Time/10);
gotoxy(73, 12);
printf("%d", Apple_Num);
}
void Lev_Sys()//等级系统
{
if(((Apple_Num-1)/ 10)== Level)
{
++Level;
if(Wait_Time> 50)
Wait_Time-= 50;
else
if(Wait_Time> 10)
Wait_Time-= 10;
else
Wait_Time-= 1;
}
}
int main(void)
{
Init();
srand((unsigned)time(NULL));//设置随机数的种子
Now_Time= clock();
int speed1=1000,speed2,a;
printf("\n");
printf("请输入你想要的速度\n");
scanf("%d",&speed2);
Level=1;
Wait_Time=speed1-speed2;
printf("请输入你想要的苹果数\n");
scanf("%d",&a);
while(a--)
Rand_Apple();
while(1)
{
if(Eat_Apple)
{
++Apple_Num;
Rand_Apple();
Lev_Sys();
Pri_News();
}
Get_Input();
Sleep(10);
}
return 0;
}
求几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用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;
}
文章到此结束,如果本次分享的c语言编程小游戏代码和用c语言编写一个小游戏的问题解决了您的问题,那么我们由衷的感到高兴!