❶ 用C语言编写的小游戏代码是什么
/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++6.0、turbo????)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。祝你好运*/x0dx0a/*贪吃蛇*/x0dx0a#include
❷ c++编程小游戏代码
以下是贪吃蛇源代码:
#include<iostream.h>
#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#defineN21
voidgotoxy(intx,inty)//位置函数{
COORDpos;
pos.X=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
voidcolor(inta)//颜色函数{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
voidinit(intapple[2])//初始化函数(初始化围墙、显示信息、苹果)
{
inti,j;//初始化围墙
intwall[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<<"■";
elsecout<<"□";
}
cout<<endl;
}
gotoxy(N+3,1);//显示信息
color(20);
cout<<"按WSAD移动方向"<<endl;
gotoxy(N+3,2);
color(20);
cout<<"按任意键暂停"<<endl;
gotoxy(N+3,3);
color(20);
cout<<"得分:"<<endl;
apple[0]=rand()%N+1;//苹果
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout<<"●"<<endl;
}
intmain()
{
inti,j;
int**snake=NULL;
intapple[2];
intscore=0;
inttail[2];
intlen=3;
charch='p';
srand((unsigned)time(NULL));
init(apple);
snake=(int**)realloc(snake,sizeof(int*)*len);
for(i=0;i<len;i++)
snake[i]=(int*)malloc(sizeof(int)*2);
for(i=0;i<len;i++)
{
snake[i][0]=N/2;
snake[i][1]=N/2+i;
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout<<"★"<<endl;
}
while(1)//进入消息循环
{
tail[0]=snake[len-1][0];
tail[1]=snake[len-1][1];
gotoxy(tail[0],tail[1]);
color(11);
cout<<"■"<<endl;
for(i=len-1;i>0;i--)
{
snake[i][0]=snake[i-1][0];
snake[i][1]=snake[i-1][1];
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout<<"★"<<endl;
}
if(kbhit())
{
gotoxy(0,N+2);
ch=getche();
}
switch(ch)
{
case'w':snake[0][1]--;break;
case's':snake[0][1]++;break;
case'a':snake[0][0]--;break;
case'd':snake[0][0]++;break;
default:break;
}
gotoxy(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])//吃掉苹果后蛇分数加1,蛇长加1
{
score++;
len++;
snake=(int**)realloc(snake,sizeof(int*)*len);
snake[len-1]=(int*)malloc(sizeof(int)*2);
apple[0]=rand()%N+1;
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout<<"●"<<endl;
gotoxy(N+5,3);
color(20);
cout<<score<<endl;
}
if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败
{
gotoxy(N/2,N/2);
color(30);
cout<<"失败!!!"<<endl;
for(i=0;i<len;i++)
free(snake[i]);
Sleep(INFINITE);
exit(0);
}
}
return0;
}
❸ 用vc或c++编写的一个小游戏代码,要有源代码,
#include<graphics.h>
#include<stdlib.h>
#include<dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int i,key;
int score=0;
int gamespeed=32000;
struct Food /*食物的结构体*/
{
int x; /*食物的横坐标*/
int y; /*食物的纵坐标*/
int yes; /*食物是否出现的变量*/
}food;
struct Snack /*蛇的结构体*/
{
int x[N];
int y[N];
int node; /*蛇的节数*/
int direction; /*蛇的方向*/
int life; /*蛇的生命,0活着,1死亡*/
}snake;
void Init(void); /*图形驱动*/
void Close(void); /*关闭游戏函数*/
void DrawK(void); /*画图函数*/
void GameOver(void);/*输出失败函数*/
void GamePlay(); /*游戏控制函数 主要程序*/
void PrScore(void); /*分数输出函数*/
DELAY(char ch)/*调节游戏速度*/
{
if(ch=='3')
{
delay(gamespeed); /*delay是延迟函数*/
delay(gamespeed);
}
else if(ch=='2')
{
delay(gamespeed);
}
}
Menu()/*游戏开运档差始菜单*/
{
char ch;
printf("Please choose the gamespeed:\n");
printf("1-Fast 2-Normal 3-Slow\n");
printf("\nPlease Press The numbers..\n");
do
{ch=getch();}
while(ch!='1'&&ch!='2'&&ch!='3'旁皮);
clrscr();
return(ch);
}
/*主函数*/
void main(void)
{
int ch;
ch=Menu();
Init();
DrawK();
GamePlay(ch);
Close();
}
void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
}
void DrawK(void)
{
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
for(i=50;i<=600;i+=10)
{
rectangle(i,40,i+10,49); /*画出上蠢消边框*/
rectangle(i,451,i+10,460); /*画出下边框*/
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10); /*画出左边框*/
rectangle(601,i,610,i+10); /*画出右边框*/
}
}
void GamePlay(char ch)
{
randomize(); /*随机数发生器*/
food.yes=1; /*1代表要出现食物,0表示以存在食物*/
snake.life=0;
snake.direction=1;
snake.x[0]=100;snake.y[0]=100;
snake.x[1]=110;snake.y[1]=100;
snake.node=2;
PrScore();
while(1) /*可以重复游戏*/
{
while(!kbhit()) /*在没有按键的情况下蛇自己移动*/
{
if(food.yes==1) /*需要食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60; /*使用rand函数随机产生食物坐标*/
while(food.x%10!=0)
food.x++;
while(food.y%10!=0)
food.y++; /*判断食物是否出现在整格里*/
food.yes=0; /*现在有食物了*/
}
if(food.yes==0) /*有食物了就要显示出来*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--) /*贪吃蛇的移动算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1]; /*贪吃蛇的身体移动算法*/
}
switch(snake.direction) /*贪吃蛇的头部移动算法,以此来控制移动*/
{
case 1:snake.x[0]+=10;break;
case 2:snake.x[0]-=10;break;
case 3:snake.y[0]-=10;break;
case 4:snake.y[0]+=10;break;
}
for(i=3;i<snake.node;i++) /*判断是否头部与身体相撞*/
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
GameOver();
snake.life=1;
break;
}
}
/*下面是判断是否撞到墙壁*/
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)
{
GameOver();
snake.life=1;
}
if(snake.life==1) /*如果死亡就退出循环*/
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y) /*判断蛇是否吃到食物*/
{
setcolor(0);
rectangle(food.x,food.y,food.x+10,food.y-10); /*吃的食物后用黑色将食物擦去*/
snake.x[snake.node]=-20;snake.y[snake.node]=-20; /*现把增加的一节放到看不到的地方去*/
snake.node++;
food.yes=1;
score+=10;
PrScore();
}
setcolor(4); /*每次移动后将后面的身体擦去*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
delay(gamespeed);
DELAY(ch);
setcolor(0);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
}
if(snake.life==1)
break;
key=bioskey(0); /*接受按键*/
if(key==ESC)
break;
else
if(key==UP&&snake.direction!=4)/*判断是否改变方向*/
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}
}
void GameOver(void)
{
cleardevice();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();
}
void PrScore(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"scord:%d",score);
outtextxy(55,20,str);
}
void Close(void)
{
getch();
closegraph();
}
贪吃蛇
❹ 求个用VC++C语言编写的小游戏
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{
int random();
int mopai(int shan);
int yourchusha(int shan);
int i,xingcan=0,temp,choice;
int yoursha=0,yourshan=0;
int itssha=0,itsshan=0;
int yourhp=4,itshp=4;
printf("三国杀简易版:\n");
printf("开始游戏:\n");
srand( (unsigned)time( NULL ) );
for(i=1;i<=4;i++)
{
random();//random() 方法可返回介于 0 ~ 1 之间的一个随机数。
if(!random())
yourshan+=1;
else yoursha+=1;
}
for(i=1;i<=4;i++)
{
random();
if(!random())
itsshan+=1;
else itssha+=1;
}
printf("你的手牌:杀%d张,闪%d张\t",yoursha,yourshan);
printf("计算机的手牌:%d张\n",itssha+itsshan);
printf("你的体力:%d\t",yourhp);
printf("计算机的体力:%d\n",itshp);
while(yourhp&&itshp)
{
printf("\n你的行动开始:\n");
printf("\n摸牌阶段:\n");
temp=mopai(xingcan);
yourshan+=temp;
yoursha+=(2-temp);
xingcan=0;
printf("你的手牌:杀%d张,闪%d张\n",yoursha,yourshan);
printf("\n按任意键继续\n");
getch();
system("cls");
printf("你的手牌:杀%d张,闪%d张\t",yoursha,yourshan);
printf("计算机的手牌:%d张\n",itssha+itsshan);
printf("你的体力:%d\t",yourhp);
printf("计算机的体力:%d\n",itshp);
printf("\n出牌阶段:\n");
printf("请选择:\n");
printf("1.出杀 2.弃牌\n");
while(1)
{
scanf("%d",&choice);
if(choice!=1&&choice!=2)
printf("输入错误,请重新输入\n");
else break;
}
if(choice==1)
{
if(yoursha)
{
yoursha-=1;
if(yourchusha(itsshan))
itsshan-=1;
else
{
itshp-=1;
}
}
else printf("你没有杀,请弃牌\n");
}
if(!itshp)
break;
printf("\n按任意键继续\n");
getch();
system("cls");
printf("你的手牌:杀%d张,闪%d张\t",yoursha,yourshan);
printf("计算机的手牌:%d张\n",itssha+itsshan);
printf("你的体力:%d\t",yourhp);
printf("计算机的体力:%d\n",itshp);
printf("弃牌阶段:\n");
while(yoursha+yourshan-yourhp>0)
{
printf("你需要弃掉%d张卡牌,请逐张弃牌:\n",yoursha+yourshan-yourhp);
printf("1.弃一张杀 2.弃一张闪\n");
while(1)
{
scanf("%d",&choice);
if(choice!=1&&choice!=2)
printf("输入错误,请重新输入\n");
else break;
}
switch(choice)
{
case 1:
{
if(yoursha)
yoursha-=1;
else printf("你没有杀,请重新选择\n");
break;
}
case 2:
{
if(yourshan)
yourshan-=1;
else printf("你没有闪,请重新选择\n");
break;
}
}
}
printf("你的行动结束。\n");
printf("\n按任意键继续\n");
getch();
system("cls");
printf("你的手牌:杀%d张,闪%d张\t",yoursha,yourshan);
printf("计算机的手牌:%d张\n",itssha+itsshan);
printf("你的体力:%d\t",yourhp);
printf("计算机的体力:%d\n",itshp);
printf("计算机的行动开始:\n");
printf("摸牌阶段:\n");
temp=mopai(xingcan);
itsshan+=temp;
itssha+=(2-temp);
xingcan=0;
printf("计算机手牌数:%d张\n",itssha+itsshan);
printf("\n按任意键继续\n");
getch();
system("cls");
printf("你的手牌:杀%d张,闪%d张\t",yoursha,yourshan);
printf("计算机的手牌:%d张\n",itssha+itsshan);
printf("你的体力:%d\t",yourhp);
printf("计算机的体力:%d\n",itshp);
printf("出牌阶段:\n");
if(itssha)
{
itssha-=1;
printf("杀\n");
printf("计算机对你出了一张杀,请出一张闪\n");
printf("1.确定 2.取消\n");
while(1)
{
scanf("%d",&choice);
if(choice!=1&&choice!=2){
printf("输入错误,请重新输入\n");
system("cls");
printf("你的手牌:杀%d张,闪%d张\t",yoursha,yourshan);
printf("计算机的手牌:%d张\n",itssha+itsshan);
printf("你的体力:%d\t",yourhp);
printf("计算机的体力:%d\n",itshp);
}
else break;
}
switch(choice)
{
case 1:
{
if(yourshan)
{
yourshan-=1;
printf("闪\n");
break;
}
else printf("你没有闪\n");
}
case 2:
{
yourhp-=1;
printf("计算机对你造成一点伤害\n");
}
}
}
if(!yourhp)
break;
printf("计算机手牌数:%d张\n",itssha+itsshan);
printf("弃牌阶段:\n");
if(itssha+itsshan-itshp>0)
{
if(itshp>itsshan)
{
printf("计算机弃杀%d张\n",itssha+itsshan-itshp);
itssha-=(itssha+itsshan-itshp);
}
else
{
printf("计算机弃杀%d张,闪%d张\n",itssha,itsshan-itshp);
itssha=0;
itsshan=itshp;
}
}
printf("计算机的行动结束。\n");
printf("\n按任意键继续\n");
getch();
system("cls");
printf("你的手牌:杀%d张,闪%d张\t",yoursha,yourshan);
printf("计算机手牌数:%d张\n",itssha+itsshan);
printf("你的体力:%d\t",yourhp);
printf("计算机的体力:%d\n",itshp);
}
if(!yourhp)
printf("很遗憾,计算机击败了你\n");
else printf("恭喜你,你击败了计算机\n");
printf("游戏结束,欢迎下次再来!\n");
printf("\n按任意键退出。");
getch();
return 0;
}
int random()
{
return rand()%3;
}
int mopai(int shan)
{
int i;
srand( (unsigned)time( NULL ) );
for(i=1;i<=2;i++)
{
random();
if(!random())
shan+=1;
}
return shan;
}
int yourchusha(int shan)
{
printf("杀 ");
if(shan)
{
printf("闪\n");
return 1;
}
else
{
printf("您对计算机造成一点伤害\n");
return 0;
}
}
❺ 用“vc”或“c++”编写的一个小游戏代码,源代码是什么
#include ❻ c语言小游戏代码 “贪吃蛇”C代码,在dev C++试验通过(用4个方向键控制) #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h> #include <Windows.h> #define W 78 //游戏框的宽,x轴 #define H 26 //游戏框的高,y轴 int dir=3; //方向变量,初值3表示向“左” int Flag=0; //吃了食物的标志(1是0否) int score=0; //玩家得分 struct food{ int x; //食物的x坐标 int y; //食物的y坐标 }fod; //结构体fod有2个成员 struct snake{ int len; //蛇身长 int speed; //移动速度 int x[100]; //蛇身某节x坐标 int y[100]; //蛇身某节y坐标 }snk; //结构体snk有4个成员 void gtxy( int x,int y) //控制光标移动的函数 { COORD coord; coord.X=x; coord.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } void gtxy( int x,int y); //以下声明要用到的几个自编函数 void csh( ); //初始化界面 void keymove( ); //按键操作移动蛇 void putFod( ); //投放食物 int Over( ); //游戏结束(1是0否) void Color(int a); //设定显示颜色的函数 int main( ) //主函数 { csh( ); while(1) { Sleep(snk.speed); keymove( ); putFod( ); if(Over( )) { system(“cls”); gtxy(W/2+1,H/2); printf(“游戏结束!T__T”); gtxy(W/2+1,H/2+2); printf(“玩家总分:%d分”,score); getch( ); break; } } return 0; } void csh( ) //初始化界面 { int i; gtxy(0,0); CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下两行是隐藏光标的设置 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); for(i=0;i<=W;i=i+2) //横坐标要为偶数,因为这个要打印的字符占2个位置 {Color(2); //设定打印颜色为绿色 gtxy(i,0); printf("■"); //打印上边框 gtxy(i,H); printf("■"); //打印下边框 } for(i=1;i<H;i++) { gtxy(0,i); printf("■"); //打印左边框 gtxy(W,i); printf("■"); //打印右边框 } while(1) { srand((unsigned)time(NULL)); //初始化随机数发生器srand( ) fod.x=rand()%(W-4)+2; //随机函数rand( )产生一个从0到比”(W-4)”小1的数再加2 fod.y=rand()%(H-2)+1; //随机函数rand( )产生一个从0到比”(H-2)”小1的数再加1 if (fod.x%2==0) break; //fod.x是食物的横坐标,要是2的倍数(为偶数) } Color(12); //设定打印颜色为淡红 gtxy(fod.x,fod.y); printf("●"); //到食物坐标处打印初试食物 snk.len=3; //蛇身长初值为3节 snk.speed=350; //刷新蛇的时间,即移动速度初值为350毫秒 snk.x[0]=W/2+1; //蛇头横坐标要为偶数(因为W/2=39) snk.y[0]=H/2; //蛇头纵坐标 Color(9); //设定打印颜色为淡蓝 gtxy(snk.x[0], snk.y[0]); printf("■"); //打印蛇头 for(i=1;i<snk.len;i++) { snk.x[i]=snk.x[i-1]+2; snk.y[i]=snk.y[i-1]; gtxy(snk.x[i],snk.y[i]); printf("■"); //打印蛇身 } Color(7, 0); //恢复默认的白字黑底 return; } void keymove( ) //按键操作移动蛇 { int key; if( kbhit( ) ) //如有按键输入才执行下面操作 { key=getch( ); if (key==224) //值为224表示按下了方向键,下面要再次获取键值 { key=getch( ); if(key==72&&dir!=2)dir=1; //72表示按下了向上方向键 if(key==80&&dir!=1)dir=2; //80为向下 if(key==75&&dir!=4)dir=3; //75为向左 if(key==77&&dir!=3)dir=4; //77为向右 } if (key==32) { while(1) if((key=getch( ))==32) break; } //32为空格键,这儿用来暂停 } if (Flag==0) //如没吃食物,才执行下面操作擦掉蛇尾 { gtxy(snk.x[snk.len-1],snk.y[snk.len-1]); printf(" "); } int i; for (i = snk.len - 1; i > 0; i--) //从蛇尾起每节存储前一节坐标值(蛇头除外) { snk.x[i]=snk.x[i-1]; snk.y[i]=snk.y[i-1]; } switch (dir) //判断蛇头该往哪个方向移动,并获取最新坐标值 { case 1: snk.y[0]--; break; //dir=1要向上移动 case 2: snk.y[0]++; break; //dir=2要向下移动 case 3: snk.x[0]-=2; break; //dir=3要向左移动 case 4: snk.x[0]+=2; break; //dir=4要向右移动 } Color(9); gtxy(snk.x[0], snk.y[0]); printf("■"); //打印蛇头 if (snk.x[0] == fod.x && snk.y[0] == fod.y) //如吃到食物则执行以下操作 { printf("7"); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //7是响铃 else Flag = 0; //没吃到食物Flag的值为0 if(snk.speed<150) snk.speed= snk.speed+5; //作弊码,不让速度无限加快 } void putFod( ) //投放食物 { if (Flag == 1) //如吃到食物才执行以下操作,生成另一个食物 { while (1) { int i,n= 1; srand((unsigned)time(NULL)); //初始化随机数发生器srand( ) fod.x = rand( ) % (W - 4) + 2; //产生在游戏框范围内的一个x坐标值 fod.y = rand( ) % (H - 2) + 1; //产生在游戏框范围内的一个y坐标值 for (i = 0; i < snk.len; i++) //随机生成的食物不能在蛇的身体上 { if (fod.x == snk.x[i] &&fod.y == snk.y[i]) { n= 0; break;} } if (n && fod.x % 2 == 0) break; //n不为0且横坐标为偶数,则食物坐标取值成功 } Color(12); //设定字符为红色 gtxy(fod.x, fod.y); printf("●"); //光标到取得的坐标处打印食物 } return; } int Over( ) //判断游戏是否结束的函数 { int i; Color(7); gtxy(2,H+1); printf(“暂停键:space.”); //以下打印一些其它信息 gtxy(2,H+2); printf(“游戏得分:%d”,score); if (snk.x[0] == 0 || snk.x[0] == W) return 1; //蛇头触碰左右边界 if (snk.y[0] == 0 || snk.y[0] == H) return 1; //蛇头触碰上下边界 for (i = 1; i < snk.len; i++) { if (snk.x[0] == snk.x[i] && snk.y[0] == snk.y[i]) return 1; } //蛇头触碰自身 return 0; //没碰到边界及自身时就返回0 } void Color(int a) //设定颜色的函数 { SetConsoleTextAttribute(GetStdHandle( STD_OUTPUT_HANDLE ),a ); }