比较普遍的C语言游戏

article/2025/8/24 9:50:19

我不怎么会教人写什么东西,我就写了几个C语言的游戏,可以自学,首先要下载VC,百度搜索VC找到官网下载,其他网站是捆绑,好,现在写代码了。
先教大家如何用VC打开C语言编写窗口
将VC下载完成点开之后会出现下面的窗口将VC下载完成点开之后会出现下面的窗口
在这里插入图片描述
开启之后点击左上角的文件!开启之后点击左上角的文件
在这里插入图片描述
选择第一个“新建”
在这里插入图片描述
然后会出现这个窗口,选择Win32 Console Application
然后再随便写一个程序名,我这就写一个E,再点击确定
之后会出现这个窗口
在这里插入图片描述
点击确定后会出现这个窗口
在这里插入图片描述
再点击确定即可完成第一步创建
然后再点击左上角的文件,选择新建
在这里插入图片描述
这次出现的窗口是这个
在这里插入图片描述
然后选择C++ Source File ,再随便写一个文件,我就还写E了,然后点击确定
就可以写C语言了
窗口如下
在这里插入图片描述
在箭头所指的窗口写代码即可
如果想测试写的代码按F5
如果想编译为EXE后缀的文件,点击组建 然后选择编译即可
好,现在就告诉大家一点点小游戏的代码
猜数字小游戏代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void circle(int i)
{
int n ;
printf(“请输入您所猜的数字(0-100) \n”);
scanf("%d",&n);
if(i<n)
{
printf(“the number is larger,input agine.\n”);
circle(i);
}
if(i>n)
{
printf(“the number is smaller.input agine \n”);
circle(i);
}
if(in)//?不是
printf(“the number is %d so congratulations!you got it!”,i);
}
int main()
{
int flag =1;
printf(“This is a small game,what you should do is just guess a intange number.\n”);
printf(“Now,please guess the number!\n”);
srand((unsigned)time(NULL));
while(flag)
{
int i=rand()%100;//?使用 % 而不是 / ,产生的数字在0-100之间,放在循环体内,每次循环都产生一个随机数
circle(i);
printf("\n继续玩请输入 1,退出请输入 0");
scanf("%d",&flag);
}
getchar();
return 0;
}
连连看小游戏代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#define MAPSIZE 4
#define MAXLINESIZE 60
//typedef enum{false,true} bool;
typedef struct{
int x,y;
}Point;
const char pictureTable[]={" ABCEDFGHI"};
bool judgeLine(char **MP,Point *start,Point *end){
int i;
if(start->x
end->x){
if(start->y > end->y){
for(i = start->y - 1 ; i > end->y ; i–)
if(MP[start->x][i]!=0)
return false;
return true;
}
else{
for(i = start->y + 1 ; i < end->y ; i++)
if(MP[start->x][i]!=0)
return false;
return true;
}
}
else if(start->yend->y){
if(start->x > end->x ){
for(i = start->x - 1 ; i > end->x ; i–)
if(MP[i][start->y]!=0)
return false;
return true;
}
else{
for(i = start->x + 1 ; i < end->x ; i++)
if(MP[i][start->y]!=0)
return false;
return true;
}
}
return false;
}
bool judgeTwoLines(char **MP,Point start,Point end,Point mid){
Point p1,p2;
mid->x=-1;
mid->y=-1;
if(judgeLine(MP,start,end)==true) return true;
p1.x=start->x;
p1.y=end->y;
p2.x=end->x;
p2.y=start->y;
mid->x=p1.x;
mid->y=p1.y;
if(MP[p1.x][p1.y]==0 && judgeLine(MP,start,&p1) && judgeLine(MP,end,&p1)) return true;
mid->x=p2.x;
mid->y=p2.y;
if(MP[p2.x][p2.y]==0 && judgeLine(MP,start,&p2) && judgeLine(MP,end,&p2)) return true;
return false;
}
bool judgeTreeLines(char **MP,Point start,Point end,Point mid1,Point mid2,int n){
int i;
mid1->x=-1;mid1->y=-1;
mid2->x=-1;mid2->y=-1;
if(judgeTwoLines(MP,start,end,mid1)) return true;
for( i=start->x - 1;i>=0;i–){
if(MP[i][start->y]!=0) break;
mid1->x=i;
mid1->y=start->y;
if(judgeTwoLines(MP,mid1,end,mid2)) return true;
}
for( i=start->x + 1;i<=n+1;i++){
if(MP[i][start->y]!=0) break;
mid1->x=i;
mid1->y=start->y;
if(judgeTwoLines(MP,mid1,end,mid2)) return true;
}
for( i=start->y - 1;i>=0;i–){
if(MP[start->x][i]!=0) break;
mid1->x=start->x;
mid1->y=i;
if(judgeTwoLines(MP,mid1,end,mid2)) return true;
}
for( i=start->y + 1;i<=n+1;i++){
if(MP[start->x][i]!=0) break;
mid1->x=start->x;
mid1->y=i;
if(judgeTwoLines(MP,mid1,end,mid2)) return true;
}
return false;
}
void ptMap(char **MP,int n){
int space=(MAXLINESIZE-n
2)/2;
int i,j;
for(i=0;i<(MAXLINESIZE-10)/2;i++)
printf(" “);
printf(“连连看\n”);
for(i=2;i<space;i++) printf(” “);
printf(“行\n”);
for(i=1;i<=n;i++){
for(j=2;j<space;j++)
printf(” “);
printf(”%d “,i);
for(j=1;j<=n;j++)
printf(”%c “,pictureTable[MP[i][j]]);
printf(”\n");
}
for(i=0;i<space;i++)
printf("
");
for(i=0;i<n;i++)
printf("%d
",i+1);
printf(“列”) ;
for(i=1;i<space-2;i++)
printf("
");
printf("\n");
}
char *createMap(int n){
char ret;
int i;
ret=(char
)malloc(sizeof(char
)
(n+2));
for(i=0;i<n+2;i++)
ret[i]=(char
)malloc(sizeof(char)
(n+2));
return ret;
}
void ranMap(char **MP,int n){
int all=(int)malloc(sizeof(int)nn);
int i,tmpi,tmp;
for(i=0;i<nn;i++)
all[i]=i/4+1;
for(i=0;i<n
n;i++){
tmpi=rand()%(nn-i);
tmp=all[tmpi];
all[tmpi]=all[n
n-i-1];
all[n*n-i-1]=tmp;
}
for(i=0;i<n+2;i++){
MP[0][i]=0;
MP[n+1][i]=0;
MP[i][0]=0;
MP[i][n+1]=0;
}
tmpi=0;
for(i=1;i<=n;i++)
for(tmp=1;tmp<=n;tmp++)
MP[i][tmp]=all[tmpi++];
}
void deletePoints(char **MP,Point *p1,Point p2){
MP[p1->x][p1->y]=0;
MP[p2->x][p2->y]=0;
}
int playTurns(int n){
int rest=n
n;
char **mp=createMap(n),c;
ranMap(mp,n);
Point mid1,mid2,pt1,pt2;
while(1){
ptMap(mp,n);
printf(“请输入消去的坐标1(行 列):\n”);
scanf("%d%d",&pt1.x,&pt1.y);
printf(“请输入消去的坐标2(行 列):\n”);
scanf("%d%d",&pt2.x,&pt2.y);
if((pt1.x
pt2.x && pt1.ypt2.y) || (pt1.x<1 || pt1.x>n || pt2.x < 1 || pt2.x > n || pt1.y<1 || pt1.y>n || pt2.y < 1 || pt2.y > n)){
printf(“无法消除这两图案,请再次检查。”);
}
else if(mp[pt1.x][pt1.y]!=0 && mp[pt1.x][pt1.y]mp[pt2.x][pt2.y] && judgeTreeLines(mp,&pt1,&pt2,&mid1,&mid2,n)){
if(mid1.x
-1){
printf(“Direct\n”);
}
else if(mid2.x
-1){
printf(“TwoLines ?%d,%d)\n”,mid1.x,mid1.y);
}
else{
printf(“TreeLines:(%d,%d)(%d,%d)\n”,mid1.x,mid1.y,mid2.x,mid2.y);
}
deletePoints(mp,&pt1,&pt2);
printf(“消去成功!\n”);
rest-=2;
if(rest0){
printf(“恭喜!你已消去所有图案!\n”);
break;
}
}
else{
printf(“无法消除这两图案,请再次检查。”);
}
//printf(“继续游戏(N/n不继续)?”);
//scanf(" %c",&c);
//if(c
’N’ || c==‘n’) break;
}
printf(“是否重新开局(y/n继续)?”);
scanf(" %c",&c);
if(c==‘y’ || c==‘Y’) return 1;
return 0;
}
int main(){
srand(time(0));
while(playTurns(4));
return 0;
}
杀手小游戏代码(就是4个电脑和你玩杀人游戏,游戏规则里面会显示的)
#include
#include
#include
#include<windows.h>
int main()
{
srand(time(NULL));
int b,p,x,c,d,e=0,f=0,g,h=0,i=1,j,l,m,n=5,o=0;
printf(“选择你的杀手编号(1-5)\n”);
scanf("%d",&b);
printf("\n");
int a[6]={0,1,2,3,4,5},k[10]={0};
AA:while(n!=1)
{
if(i1)
{
Sleep (1000);
printf(“存活者:%d %d %d %d %d\n\n”,a[1],a[2],a[3],a[4],a[5]);
}
if(i
6) i=1;
if(a[i]0)
{
i++;
continue;
}
Sleep(1000);
printf(“轮到%d号\n”,i);
if(i
b)
{
Sleep(1000);
printf(“选择你的目标:%d %d %d %d %d\n”,a[1],a[2],a[3],a[4],a[5]);
scanf("%d",&p);
}
else
do
p=rand()%5+1;
while(p!=i);
while(a[p]0||pi) p=rand()%5+1;
Sleep(1000);
printf("%d号选择了%d号\n",i,p);
Sleep(1000);
printf("%d号掷出了%d\n",i,c=rand()%6+1);
if(i>=c)
{
a[p]=0;
Sleep(1000);
printf("%d号杀死了%d号\n\n",i,p);
n–;
}
else {Sleep(1000); printf("%d号没有杀死目标\n\n",i);}
if(i5&&a[p]0)
{
if(rand()%3
1||rand()%3
2)
{
if(p1&&f<=2)
{
Sleep(1000); printf(“5号无视1号复活权\n”);
Sleep(800); printf(“直接将其杀死\n\n”);
f=3;
}
if(p
2&&h0)
{
Sleep(1000); printf(“5号无视2号复活权\n”);
Sleep(800); printf(“直接将其杀死\n\n”);
h=1;
}
if(p
3&&o0)
{
Sleep(1000); printf(“5号无视3号复活权\n”);
Sleep(800); printf(“直接将其杀死\n\n”);
o=1;
}
}
}
if(a[1]0)
{
if(f<=2)
{
Sleep(1000);
printf(“1号使用复活权\n”);
f++; n++; a[1]=1;
if(f
1)
{
do g=rand()%5+1;
while(a[g]0||g1);
Sleep(1000); printf(“并随机诅咒了%d号\n”,g);
Sleep(1000); printf("%d号死了\n\n",g);
a[g]=0; n–;
}
}
else a[1]=0;
}
if(a[2]0&&h0)
{
Sleep(1000);
printf(“2号使用复活权\n”);
n++;
a[2]=2;
do m=rand()%5+1;
while(a[m]0||m2);
Sleep(1000); printf(“并随机诅咒了%d号\n”,m);
if(rand()%2
1)
{
a[m]=0;
Sleep(1000); printf("%d号死了\n\n",m);
n–;
}
else
{
Sleep(1000); printf(“但他没死\n\n”);
}
h=1;
}
if(a[3]0&&o0)
{
Sleep(1000); printf(“3号使用复活权\n\n”); a[3]=3; o++; n++;
}
if(i4&&a[p]0)
{
if(n
1) break;
else
{
Sleep(1000); printf(“4号使用再次攻击权\n”);
goto AA;
}
}
if(a[b]0&&e0)
{
if(n
1) break;
printf(“你死了,是否继续观看游戏至结束?是按0,否按1\n”);
scanf("%d",&x);
if(x==1) break;
else e=1;
}
i++;
}
for(j=1;j<=5;j++) if(a[j]!=0) d=j;
if(x!=1)
{
Sleep(800);
printf("%d号赢了",d);
}
else
printf(“游戏结束”);
}
贪吃蛇小游戏代码
#include
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
using namespace std;
const int N=21;
void Get_xy(int x,int y) //定位光标位置
{
HANDLE hout;
COORD pos;
pos.X=x2;
pos.Y=y;
hout=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hout,pos);
}
void Color(int num) //设置颜色
{
HANDLE hout;
hout=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hout,num);
}
void Initial() //初始化
{
int i,j;
int wall[N+2][N+2]={{0}};
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
wall[i][j]=1;
Color(11);
for(i=0;i<N+2;i++)
{
for(j=0;j<N+2;j++)
{
if(wall[i][j])
cout<<“■”;
else cout<<“□”;
}
cout<<endl;
}
Get_xy(N+3,1); Color(20);
cout<<“按’W’,‘S’,‘A’,'D’进行操作”<<endl;
Get_xy(N+3,2); Color(20);
cout<<“按任意键暂停”<<endl;
Get_xy(N+3,3); Color(20);
cout<<“得分:”<<endl;
}
void game()
{
int** snake=NULL;
int len=1;
int i;
int score=0;
int apple[2];
int tail[2];
char ch=‘p’;
Initial();
srand((unsigned)time(NULL));
apple[0]=rand()%N+1;
apple[1]=rand()%N+1;
Get_xy(apple[0],apple[1]);
Color(12);
cout<<“●”<<endl;
snake=(int**)realloc(snake,sizeof(int
)len);
for(i=0;i<len;i++)
snake[i]=(int
)malloc(sizeof(int)2);
snake[0][0]=N/2;
snake[0][1]=N/2+1;
Get_xy(snake[0][0],snake[0][1]); Color(14);
cout<<“⊙”<<endl;
int flag=1;
while(1)
{
if(flag)
{
tail[0]=snake[len-1][0];
tail[1]=snake[len-1][1];
Get_xy(tail[0],tail[1]);
Color(11);
cout<<“■”<<endl;
}
flag=1;
for(i=len-1;i>0;i–)
{
snake[i][0]=snake[i-1][0];
snake[i][1]=snake[i-1][1];
Get_xy(snake[i][0],snake[i][1]);
Color(14);
cout<<“★”<<endl;
}
if(kbhit())
{
Get_xy(0,N+3);
ch=getche();
}
switch(ch)
{
case ‘W’:
case ‘w’: snake[0][1]–; break;
case ‘S’:
case ‘s’: snake[0][1]++; break;
case ‘A’:
case ‘a’: snake[0][0]–; break;
case ‘D’:
case ‘d’: snake[0][0]++; break;
default :break;
}
for(i=1;i<len;i++)
{
if(snake[0][0]==snake[i][0] && snake[0][1]==snake[i][1])
{
Get_xy(N/2,N/2); Color(30);
cout<<“Game over!”<<endl;
exit(0);
}
}
Get_xy(snake[0][0],snake[0][1]);
Color(14); cout<<“⊙”<<endl;
Sleep(abs(200-0.5
score));
if(snake[0][0]==apple[0] && snake[0][1]apple[1])
{
flag=0; score++; len++; srand((unsigned)time(NULL));
snake=(int**)realloc(snake,sizeof(int*)len);
snake[len-1]=(int
)malloc(sizeof(int)*2);
Get_xy(N+6,3); Color(20); cout<<score<<endl;
apple[0]=rand()%N+1; apple[1]=rand()%N+1;
Get_xy(apple[0],apple[1]);
Color(12);
cout<<“●”<<endl;
}
if(snake[0][0]
-1 || snake[0][0]N+1 || snake[0][1]-1 || snake[0][1]==N+1)
{
Get_xy(N/2,N/2); Color(30);
cout<<“Game Over!”<<endl;
for(i=0;i<len;i++)
free(snake[i]);
Sleep(INFINITE);
exit(0);
}
if(len>=N*N-1)
{
Get_xy(N/2,N/2); Color(30);
cout<<“Win!”<<endl;
for(i=0;i<len;i++)
free(snake[i]);
Sleep(INFINITE);
exit(0);
}
}
}
int main()
{
game();
}
冒险小游戏代码(就是一个比较简单的打怪小游戏)
#include<stdio.h>
#define DECISION “你想去哪?\n1 村庄\n2 冒险\n3 查看个人信息\n4 存档(首次游戏请先存储一次再游戏)”//待添加
#define DECISION2 “你想挑战的副本是:1.史莱姆森林 2.哥布林部落 3.鬼人古堡”//待添加
void fjshop(void);//防具店
void wqshop(void);//武器店
void vill(void);//村庄
void zdmk(void);//攻击
void lvup(void);//升级
void slm(void);//史莱姆
void slm1(void);
void slm2(void);//完毕
void gbl(void);//哥布林
void gbl1(void);
void gbl2(void);//end
void gr(void);//鬼人
void gr1(void);//
void gr2(void);//end//我把这些函数整理了下,显得整洁
void maoxian(void);
void vill(void);
void pi(void);//personal information本来想叫rw(人物),但害怕后期加任务栏
void cd(void);//存档
int hp=200,mp=20,sp,ex=0,p=5,q=20,lv=1,i=1,eak=0,edf=0,gd=0,viz=0,sh,tybosshp,x,hpboss,fb;

int main(void)//主程序开始
{
while(2>1)
{

while(x==0)
{printf("%s\n",DECISION);scanf("%d",&x);while(x==1){vill();viz=0;x=0;}while(x==2){maoxian();x=0;}while(x==3){pi();x=0;}while(x==4){cd();x=0;}
}

}
return 0;
}//主程序到此处完结
void cd(void)//存档模块
{
int du;
printf(“你想要读取还是存储?\n1 读取\n2 存储\n3 取消\n”);
scanf("%d",&du);
int a[]={lv,hp,mp,ex,gd};
while(du1)
{
FILE *fpRead=fopen(“data.txt”,“r”);
int b[5];
for(int i=0;i<5;i++)
{
fscanf(fpRead,"%d ",&b[i]);
a[i]=b[i];
}
lv=a[0],hp=a[1],mp=a[2],ex=a[3],gd=a[4];
du=-1;
}
while(du
2)
{
FILE fpWrite=fopen(“data.txt”,“w”);
for(int i=0;i<5;i++)
{
fprintf(fpWrite,"%d “,a[i]);
}
fclose(fpWrite);
du=-1;
}
while(du==3)
{
du=-1;
}
}
void pi(void)//个人信息模块
{
printf(” 个人信息 \n") ;
printf(“称号:暂未开放 \n”);//暂无
printf(“等级:%d hp:%d mp:%d 经验:%d 金币:%d \n”,lv,hp,mp,ex,gd);
printf(“技能伤害:1.重击:%d 2.嗜血:boss越强,伤害越高 3.星爆气流斩:%d \n”,p,q);
}
void lvup(void)//升级模块
{
while(ex>100
lv)//把经验栏提出来,因为每个怪物经验不同

{

printf(“升级了,你的等级为%d\n”,lv+1);

p=p+3;

q=q+10;

ex=ex-100*lv;

lv=lv+1;

hp=200+20*lv;

mp=20+2*lv;

}
}
void vill(void)//村庄
{
while(viz==0)
{
printf(“欢迎回到村庄勇士\n请选择目的\n1 武器店\n2 防具店\n3 退出村庄\n”);
scanf("%d",&viz);
while(viz>=3)
{
printf(“退出村庄\n”);
viz=-1;
}

	while(viz==1)
{	wqshop();
}while(viz==2)
{fjshop();
}

}
}//村庄模块
void wqshop(void)//武器店
{
while(viz1)
{ int wq=0,dj=1,cj=1;
printf(“你好勇士,欢迎来到武器店\n请问你需要什么?\n1 短剑(伤害加10)\n2 500金币 长剑(伤害加30)\n3 2000金币 退出武器店\n”);
scanf("%d",&wq);
if(wq>2)
{
while(wq>3)
{
printf(“未开放,敬请期待\n”);
wq=0;
}
while(wq
3)
{
printf(“你选择退出\n;”);
viz=0;
wq=0;
}
}
else
{
while(wq1)
{
if(gd>500)
{
if(dj=1)
{
printf(“你购买了短剑,伤害加十,重复购买无效\n”);
eak=10;
p=p+eak;//声明全局变量,装备加成攻击力
dj=0;
wq=0;
}
else
{
printf(“你已经购买过了\n”);
}
}
else
{
printf(“金币不足\n”);
}
wq=0;
}
while(wq
2)
{
if(gd>2000)
{
if(cj=1)
{
printf(“你购买了长剑,伤害加三十,重复购买无效\n”);
eak=30;
p=p+eak;//声明全局变量,装备加成攻击力
cj=0;
}
else
{
printf(“你已经购买过了\n”);
}
}
else
{
printf(“金币不足\n”);
}
wq=0;
}
}
}
}
void fjshop(void)//防具店
{
while(viz==2)
{ int fj=0,bj=1,szj=1;
printf(“你好勇士,欢迎来到防具店\n请问你需要什么?\n1 布甲(伤害抵消4)\n2 500金币 锁子甲(伤害抵消7)\n3 1000金币 退出防具店\n”);
scanf("%d",&fj);
if(fj>2)
{
while(fj>3)
{
printf(“未开放,敬请期待\n”);
fj=0;

			}while(fj==3){printf("你选择退出\n;");viz=0;fj=0;}}else{while(fj==1){if(gd>500){if(bj=1){printf("你购买了布甲,伤害抵消4,重复购买无效\n");edf=4;//声明全局变量,装备加成攻击力bj=0;}else{printf("你已经购买过了\n");}}else{printf("金币不足\n");}fj=0;}while(fj==2){if(gd>1000){if(szj=1){printf("你购买了锁子甲,伤害抵消7,重复购买无效\n");edf=7;//声明全局变量,装备加成攻击力szj=0;}else{printf("你已经购买过了\n");}}else{printf("金币不足\n");}fj=0;}}}

}
void maoxian(void)//冒险模块
{
printf("%s\n",DECISION2);
scanf("%d",&fb);
if(fb>3)
{
printf(“未开放请重新选择\n”);
}
else
{

switch (fb)//这样看起来不简洁,但后期加掉落物品时很方便

{case 1:
slm();break;case 2:
slm();
gbl();break;case 3:
slm();slm();//同上 
gbl();  	
gr();break;

}
}
lvup();
hp=200+20lv;
mp=20+2
lv;
}
void slm(void)//怪物模块
{
slm1();
zdmk();
slm2();
}
void gbl(void)
{
gbl1();
zdmk();
gbl2();
}
void gr(void)
{
gr1();
zdmk();
gr2();
}
void zdmk(void)//战斗模块
{
while(hp>0&&tybosshp>0)
{
i=1;
printf(“请选择技能\n1.重击 (造成%d点伤害,mp+1)\n2.嗜血 (造成当前生命值百分之八的伤害,mp-3)\n3.星爆气流斩 (造成%d点伤害,mp-5)\n”,p,q);//待添加
scanf("%d",&sp);

    while(4<sp){printf("技能选择错误,请重新选择\n");sp=-1;}while(sp==1){tybosshp=tybosshp-p;mp++;printf("你使用技能重击对boss造成%d点伤害,恢复一点mp,boss还有%d血量,你的mp还有%d\n",p,tybosshp,mp);sp=0;}while(sp==2){while(mp>=3&&sp==2){sh=tybosshp*0.08;tybosshp=tybosshp*0.92;mp=mp-3;printf("你使用技能嗜血对boss造成%d点伤害,boss还有%d血量,你的mp还有%d\n",sh,tybosshp,mp);sp=0;}while(mp<3&&sp==2){printf("mp不足3点,无法释放技能嗜血\n");sp=-1;}}while(sp==3){while(mp>=5&&sp==3){tybosshp=tybosshp-q;mp=mp-5;sp=0;printf("你使用技能星爆气流斩对boss造成%d点伤害,boss还有%d血量,你的mp还有%d\n",q,tybosshp,mp);//待定 }while(mp<5&&sp==3){printf("mp不足5点,无法释放技能星爆气流斩 \n");sp=-1;}}while(tybosshp>0&&sp==0){if(tybosshp>hpboss*0.1)//boss血量下降到10%以下暴怒 {sh=15+hp*0.01-edf;hp=hp-sh;printf("boss撞了你一下,你的hp减少了%d点,你还有%d点生命值\n",sh,hp);sp=-1;}else{printf("boss变为狂暴状态");sh=15+hpboss*0.1-edf;//伤害提升 hp=hp-sh;printf("boss使用疯狂乱打,你的hp减少了%d点,你还有%d点生命值\n",sh,hp); sp=-1; }}
}
while(tybosshp<=0&&i==1)
{printf("你已击杀BOSS,恭喜通关!\n");i=i+1;
}
while(hp<0&&i==1)
{printf("你已阵亡,请在简单副本提升能力\n");i=i+2;getchar();printf("你已原地复活\n恢复hp,mp");hp=200+20*lv;mp=20+2*lv;
}

}

//分割线史莱姆
void slm1(void)
{
printf(“史莱姆出现\n”);

hpboss=100;//BOSS的生命值

tybosshp=hpboss;
}
void slm2(void)
{
if(i==2)
{
printf(“你获得20ex,50金币\n”);//怪物经验已全部调整

  ex=ex+20;gd=gd+50;printf("你的经验为%d\n",ex);

}
else
{
printf(“继续努力吧\n”);
}
}

void gbl1(void)//哥布林
{
printf(“哥布林出现\n”);

hpboss=300;//BOSS的生命值

tybosshp=hpboss;
}
void gbl2(void)//end
{
if (i==2)
{
printf(“你获得100ex,200金币\n”);

 ex=ex+100;gd=gd+200;printf("你的经验为%d\n",ex);

}
else
{
printf(“继续努力吧\n”);
}
}
void gr1(void)//鬼人
{
printf(“鬼人出现\n”);

hpboss=800;//BOSS的生命值

tybosshp=hpboss;
}
void gr2(void)
{
if(i==2)
{
printf(“你获得300ex,500金币\n”);

  ex=ex+300;gd=gd+500;printf("你的经验为%d\n",ex);

}
else
{
printf(“继续努力吧\n”);
}
}
猜拳小游戏代码(和电脑猜拳)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char gamer; // 玩家出拳
int computer; // 电脑出拳
int result; // 比赛结果
// 为了避免玩一次游戏就退出程序,可以将代码放在循环中
while (1){
printf(“这是一个猜拳的小游戏,请输入你要出的拳头:\n”);
printf(“A:剪刀\nB:石头\nC:布\nD:不玩了\n”);
scanf("%c%*c",&gamer);
switch (gamer){
case 65 | 97: // A | a
gamer=4; break;
case 66 | 98: // B | b
gamer=7; break;
case 67 | 99: // C | c
gamer=10; break;
case 68 | 100: // D | d
return 0;

        default:printf("你的选择为 %c 选择错误,退出...\n",gamer);getchar();system("cls"); // 清屏return 0;break;}srand((unsigned)time(NULL));  // 随机数种子computer=rand()%3;  // 产生随机数并取余,得到电脑出拳result=(int)gamer+computer;  // gamer 为 char 类型,数学运算时要强制转换类型printf("电脑出了");switch (computer){case 0:printf("剪刀\n");break; //4    1case 1:printf("石头\n");break; //7  2case 2:printf("布\n");break;   //10 3}printf("你出了");switch (gamer){case 4:printf("剪刀\n");break;case 7:printf("石头\n");break;case 10:printf("布\n");break;}if (result==6||result==7||result==11) printf("你赢了!");else if (result==5||result==9||result==10) printf("电脑赢了!");else printf("平手");system("pause>nul&&cls");  // 暂停并清屏
}
return 0;

}
好了,如果感觉代码还可以的呢欢迎加入QQ代码学习交流群926652097
里面有很多大佬和小白和码农


http://chatgpt.dhexx.cn/article/ESfirkG3.shtml

相关文章

C语言实现入门级小游戏——三子棋

今天博主将为大家带来C语言入门级小游戏——三子棋&#xff08;井字棋&#xff09;的详细介绍&#xff0c;希望这篇文章对大家能有帮助 。 在编程的学习过程中&#xff0c;编写一些中这样的小游戏&#xff0c;是非常有乐趣的事情&#xff0c;完成之后会非常非常有成就感&…

【C语言小游戏】猜数字游戏

hello&#xff0c;csdn的小伙伴呢&#xff0c;在前面&#xff0c;我们已经初步了解了c语言&#xff0c;并且系统的学习了分支与循环的内容。今天我们就将分支与循环的内容综合应用一下&#xff0c;来做一个很简单猜数字小游戏。 目录 程序的需求以及最终代码展示 一、实现打印…

C语言学习推荐---小游戏

文章目录 控制台文字游戏srand、rand、time猜拳游戏 控制台动作游戏运动的小球贪吃蛇 音乐图形界面easyx介绍 后续 学习c语言的时候&#xff0c;想写例子&#xff0c;但是课后习题又太枯燥怎么办&#xff1f; 写小游戏可以锻炼我们的编程抽象能力和思维&#xff0c;而且比较有趣…

c语言入门级小游戏·飞机(1.0版)| 激发你的编程兴趣(50~100行代码)

目录 制作一个可移动的飞机 发射激光 设置一个可击中的障碍物 完整代码 声明&#xff1a;本游戏参考《c语言课程设计与游戏开发实践教程》。 先来放一个效果图 怎么样&#xff0c;真的是新手级别吧&#xff1f; &#xff08;效果视频c语言练习草稿_game1.2.5飞机-CSDN直播…

C语言小游戏之扫雷完整版

C语言小游戏之扫雷 一.游戏介绍二.游戏步骤及实现的功能1.初始化雷盘2.打印雷盘3.随机布置雷4.玩家排雷5.防止玩家第一次被炸死6.统计所选位置周围八个位置中雷的个数7.递归拓展已选位置周围的区域8.标记雷及取消标记 一.游戏介绍 看到这张图片&#xff0c;相信很多小伙伴都非常…

C初阶必写的C语言小游戏—扫雷,一看就会,看完就能写

目录 一.前言二.资源环境的配置三.游戏整体构思1.游戏的开始与结束(菜单)2.创建二维数组用来布置雷和排查雷的信息3.初始化棋盘4.打印棋盘5.布置雷6.排查雷 四.所有代码及效果展示 一.前言 人尽皆知的扫雷小游戏&#xff0c;原理简单&#xff0c;写法也简单&#xff0c;我会通…

c语言代码怎样制作成一个游戏?

游戏背景 《球球大作战》是Superpop一款自主研du发的免费手机网络游戏。 以玩家间的实时互动PK产生游戏乐趣为设计宗旨&#xff0c;通过简单的规则将玩家操作直接转化为游戏策略&#xff0c;体验智谋碰撞的战斗乐趣。 游戏的基本操作包括键盘按下&#xff08;上下左右四个方向…

[ C语言 ] 用C语言实现小游戏 ---- 三子棋 代码 + 解析

前言 本篇文章记录了用C语言实现三子棋小游戏&#xff0c;主要目的是对之前C语言知识学习的巩固&#xff0c;联系各个知识&#xff0c;以及怎么样实际使用各个知识。 一、三子棋的游戏规则 玩家将会看到一个3X3的网格棋盘&#xff0c;默认玩家先下棋&#xff0c;电脑后下棋。 …

一个好玩的小游戏(纯C语言编写)

最近在看知乎是发现了一个这一个专栏 https://zhuanlan.zhihu.com/c2game 从中获取的许多知识&#xff0c;本文中的游戏也是从里面学到的&#xff0c;不过本人又自己加了一些功能。 这是一个类似于飞机大战的游戏&#xff0c;不过目前代码量比较小&#xff0c;所以看起来非常…

【用游戏学C语言】几个基本的小游戏的实现(缓慢更新中~)

目录 ​更新说明 前言 1.相关函数的简单介绍&#xff08;预备知识&#xff09; &#xff08;1&#xff09;关于函数getch() &#xff08;2&#xff09;关于函数system() &#xff08;3&#xff09;关于函数sleep() &#xff08;4&#xff09;关于函数kbhit() &#xff…

【C语言】游戏项目:《疯狂赛车》,每个人都要加油活下去

序 交换一个苹果&#xff0c;得到一个苹果&#xff1b;交换一种思想&#xff0c;得到一种思想。选择与你才干&#xff0c;性格不同的人&#xff0c;他可以弥补你的缺陷。 嗨&#xff01;这里是狐狸~~ 最近有点网抑云了&#xff0c;脑子很乱&#xff0c;不晓得想些什么&#…

Qt学习之QFile和QFileInfo

Qt项目中对文件操作是必不可少的。顾名思义&#xff1a;QFile是文件对象类&#xff0c;QFileInfo是文件信息对象类&#xff0c;结合例子我们看一下用法。 读的文件内容如下&#xff0c;以字符 “#” 或者 “;” 开始的为注释行。 [Extern_Item1] ;名称 Namelibccgext_cvi_64.so…

QT5 QFile读/写文件操作方法

文档打开读/写操作命令说明 值描述QIODevice::NotOpen未打开QIODevice::ReadOnly以只读方式打开QIODevice::WriteOnly以只写方式打开QIODevice::ReadWrite以读写方式打开QIODevice::Append以追加的方式打开&#xff0c;新增加的内容将被追加到文件末尾QIODevice::Truncate以重…

qt5之QFile读写文件

1、效果 读写文件用到的是QFile类&#xff0c; 这里&#xff0c;我显示文件内容用到的是 QTextEdit 2、创建打开和关闭按钮 // 打开文件btnOpenFile new QToolButton;btnOpenFile->setText(tr("open a file"));btnOpenFile->setToolTip(tr("open …

Qt 创建文件 用QFile和QDir类

项目需求是 根据日期创建多级子文件夹, 根目录保存 log.txt 控制台程序实现 如下执行结果 createFile 为程序目录 文档结构: 源码: #include <QtCore/QCoreApplication> #include <QDir> #include <QFile> #include <QDebug> #include <QDateTim…

QFile(文件)

QFile QFile提供一个用于读/写的接口&#xff0c;是一个可以用来读/写二进制文件的Qt资源的I/O设备&#xff0c;QFile可以单独使用&#xff0c;一般配合QTextStream或QDataStream 输入文件路径时最好使用"/"作为分隔符 构造函数&#xff1a; 常用的函数&#xff1a;…

QFileDialog

一、描述 QFileDialog 类使用户能够遍历文件系统以选择一个或多个文件或目录。 创建 QFileDialog 最简单的方法是使用静态函数&#xff1a; fileName QFileDialog::getOpenFileName(this, tr("Open Image"), "/home/jana", tr("Image Files (*.p…

Qt -- QFile文件读写操作

对于文件的读写操作&#xff0c;C 和 C 都各有一套方式。而在 Qt 中也有一套&#xff0c;即使用 QFile 对文件进行读和写操作。 文件的打开方式 文件路径说明&#xff1a;&#xff08;windows-release编译&#xff09; QFile *file new QFile("EcgCap.dat");表示这…

[QT_032]Qt学习之基本文件读写QFile

本文转自&#xff1a;《Qt编程指南》 作者&#xff1a;奇先生 Qt编程指南&#xff0c;Qt新手教程&#xff0c;Qt Programming Guide 7.2 基本文件读写QFile Qt 常见的文件读写类有三个 QFile、QTextStream 和 QDataStream&#xff0c;本节先概要介绍这三个文件读写类&…

QFileInfo

一、描述 QFileInfo 提供有关文件系统中文件的名称和位置&#xff08;路径&#xff09;、访问权限、文件类型等信息。 FileInfo 还可用于获取有关 Qt 资源的信息。这个类是隐式共享的。 二、成员函数 2.1、判断函数 1、bool isAbsolute() 文件路径是否绝对路径。 注意&am…