当前位置:首页 » 编程语言 » c语言游戏启动代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言游戏启动代码

发布时间: 2023-05-07 06:04:20

㈠ 求一些c语言小游戏的源代码,谢谢

学习一下数字版“拼图”代码写法:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<time.h>

#include<windows.h>

inti,j,r,k; //i、j、r用于循环,k存放随机数值

intm,n; //m、n是当前空位的下标

inta[4][4]; //存储4×4共16个数字的数组

voidshow(void); //输出界面

voidcsh(void); //初始化界面

intyes(void); //判断排序是否成功(1是0否)

voip(void);//数字向上移动到空位(空位则下移)

voiddown(void); //数字向下移

voidleft(void); //数字向左移

voidrght(void); //数字向右移

voidinkey(void); //按键操作

voidgtxy(intx,inty); //控制光标位置的函数

intmain(void)

{while(1)

{csh();

while(1)

{inkey();

show();

if(yes())

{gtxy(6,12);printf("你成功了!再来一局y/n?");break;}

}

if(getch()=='n')break;

}

return0;

}

voidcsh(void) //初始化

{r=0;

CONSOLE_CURSOR_INFOcursor_info={1,0};//以下两行是隐藏光标的设置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

for(i=0;i<4;i++)//给数组a依序赋值

for(j=0;j<4;j++)

{if(i==3&&j==3)a[i][j]=0;

elsea[i][j]=1+r++;

}

m=3; n=3; //记下空格(值为0)的下标

down( ); rght( ); rght( ); down( ); //预演4步

srand((unsigned)time(0)); //初始化随机数发生器

for(r=0;r<500;r++)//将数组各值打乱

{k=rand()%(4);

switch(k)

{case0:{up();break;}

case1:{down();break;}

case2:{left();break;}

case3:{rght();break;}

}

}

system("cls");

printf(" 数字拼图");

printf(" ┌──────┬──────┬──────┬──────┐");

printf(" │││││");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │││││");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │││││");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │││││");

printf(" └──────┴──────┴──────┴──────┘");

show();

}

voidshow(void)//输出界面

{for(i=0;i<4;i++)

for(j=0;j<4;j++) //gtxy(7*j+9,2*i+4)是光标到指定位置输出数字

{gtxy(7*j+9,2*i+4); if(a[i][j]==0)printf("│");

elseif(a[i][j]>9)printf("%d│",a[i][j]);

elseprintf("%d│",a[i][j]);

}

}

voidinkey(void) //按键操作

{intkey;

key=getch();

switch(key)

{case72:{up();break;}

case80:{down();break;}

case75:{left();break;}

case77:{rght();break;}

}

}

voip(void) //向上移动

{if(m!=3)//空位不得在下边界

{a[m][n]=a[m+1][n];m++;a[m][n]=0;}

}

voiddown(void) //向下移动

{if(m!=0)//空位不得在上边界

{a[m][n]=a[m-1][n];m--;a[m][n]=0;}

}

voidleft(void) //向左移动

{if(n!=3)//空位不得在右边界

{a[m][n]=a[m][n+1];n++;a[m][n]=0;}

}

voidrght(void) //向右移动

{if(n!=0)//空位不得在左边界

{a[m][n]=a[m][n-1];n--;a[m][n]=0;}

}

intyes(void)//判断是否成功

{r=0;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

{if(a[i][j]!=1+r++)return(r==16)?1:0;}

}

voidgtxy(intx,inty)//控制光标位置的函数

{COORDcoord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);

}

㈡ 用C语言编写的小游戏代码是什么

/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++6.0、turbo…………)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。祝你好运*/
/*贪吃蛇*/
#include<stdio.h>
#include<time.h>
#include<conio.h>
#include<stdlib.h>
int head=3 ,tail=0;
int main()
{
int i,j,k=0;
int zuobiao[2][80];
long start;
int direction=77;
int gamespeed;
int timeover;
int change(char qipan[20][80],int zuobiao[2][80],char direction);
zuobiao[0][tail]=1;zuobiao[1][tail]=1;zuobiao[0][1]=1;zuobiao[1][1]=2;zuobiao[0][2]=1;zuobiao[1][2]=3;zuobiao[0][head]=1;zuobiao[1][head]=4;
/*处理棋盘*/
char qipan[20][80];//定义棋盘
for(i=0;i<20;i++)
for(j=0;j<80;j++)
qipan[i][j]=' ';//初始化棋盘
for(i=0;i<80;i++)
qipan[0][i]='_';
for(i=0;i<20;i++)
qipan[i][0]='|';
for(i=0;i<20;i++)
qipan[i][79]='|';
for(i=0;i<80;i++)
qipan[19][i]='_';
qipan[1][1]=qipan[1][2]=qipan[1][3]='*';//初始化蛇的位置
qipan[1][4]='#';
printf("This is a game of a SNAKE.\nGOOD LUCK TO YOU !\n");
printf("Input your game speed,please.(e.g.300)\n");
scanf("%d",&gamespeed);

while(direction!='q')
{
system("cls");
for(i=0;i<20;i++)//打印出棋盘
for(j=0;j<80;j++)
printf("%c",qipan[i][j]);
timeover=1;
start=clock();
while(!kbhit()&&(timeover=clock()-start<=gamespeed));
if(timeover)
{
getch();
direction=getch();
}
else
direction=direction;
if(!(direction==72||direction==80||direction==75||direction==77))
{
return 0;
system("cls");
printf("GAME OVER!\n");
}
if(!change(qipan,zuobiao,direction))
{
direction='q';
system("cls");
printf("GAME OVER!\n");
}
}
return 0;
}
int change(char qipan[20][80],int zuobiao[2][80],char direction)
{
int x,y;
if(direction==72)
x=zuobiao[0][head]-1;y=zuobiao[1][head];
if(direction==80)
x=zuobiao[0][head]+1;y=zuobiao[1][head];
if(direction==75)
x=zuobiao[0][head];y=zuobiao[0][head]-1;
if(direction==77)
x=zuobiao[0][head];y=zuobiao[1][head]+1;
if(x==0||x==18||y==78||y==0)
return 0;
if(qipan[x][y]!=' ')
return 0;
qipan[zuobiao[0][tail]][zuobiao[1][tail]]=' ';
tail=(tail+1)%80;
qipan[zuobiao[0][head]][zuobiao[1][head]]='*';
head=(head+1)%80;
zuobiao[0][head]=x;
zuobiao[1][head]=y;
qipan[zuobiao[0][head]][zuobiao[1][head]]='#';
return 1;
}

㈢ dev-c++中的c语言游戏代码是什么

#include x0dx0a#include x0dx0a#include x0dx0a#include x0dx0ax0dx0a#define U 1x0dx0a#define D 2x0dx0a#define L 3x0dx0a#define R 4 //蛇的状态,U:上 ;D:下;L:左 R:右x0dx0ax0dx0atypedef struct SNAKE { //蛇身的一个节点x0dx0aint x;x0dx0aint y;x0dx0astruct SNAKE *next;x0dx0a} snake;x0dx0ax0dx0a/源启中/全局变量//x0dx0aint score=0,add=10;//总得分与每次吃食物得分。x0dx0aint status,sleeptime=200;//每次运行的时间间隔x0dx0asnake *head, *food;//蛇头指针,食物指针x0dx0asnake *q;//遍历蛇的时候用到的指针x0dx0aint endgamestatus=0; //游戏结束的情况,1:撞到墙;2:咬到自己;3:主动退旁笑出游戏。x0dx0ax0dx0a//声明全部函数//x0dx0avoid Pos();x0dx0avoid creatMap();x0dx0avoid initsnake();x0dx0aint biteself();x0dx0avoid createfood();x0dx0avoid cantcrosswall();x0dx0avoid snakemove();x0dx0avoid pause();x0dx0avoid gamecircle();x0dx0avoid welcometogame();x0dx0avoid endgame();x0dx0avoid gamestart();x0dx0ax0dx0avoid Pos(int x,int y)//设置光标位置x0dx0a{x0dx0aCOORD pos;x0dx0aHANDLE hOutput;x0dx0apos.X=x;x0dx0apos.Y=y;x0dx0ahOutput=GetStdHandle(STD_OUTPUT_HANDLE);(hOutput,pos);x0dx0a}x0dx0ax0dx0avoid creatMap()//创建地图x0dx0a{x0dx0aint i;x0dx0afor(i=0; i<58; i+=2) { //打印上下边框x0dx0aPos(i,0);x0dx0aprintf("■");x0dx0aPos(i,26);x0dx0aprintf("■");x0dx0a}x0dx0afor(i=1; i<26; i++) { //打印左右边框x0dx0aPos(0,i);x0dx0aprintf("■");x0dx0aPos(56,i);x0dx0aprintf("■");x0dx0a}x0dx0a}x0dx0ax0dx0avoid initsnake()//初始化蛇身x0dx0a{x0dx0asnake *tail;x0dx0aint i;x0dx0atail=(snake*)malloc(sizeof(snake));//从蛇尾开始,头插法,以x,y设定开始的位置//x0dx0atail->x=24;x0dx0atail->y=5;x0dx0atail->next=NULL;x0dx0afor(i=1; i<=4; i++) {x0dx0ahead=(snake*)malloc(sizeof(snake));x0dx0ahead->next=tail;x0dx0ahead->x=24+2*i;x0dx0ahead->y=5;x0dx0atail=head;x0dx0a}x0dx0awhile(tail!=NULL) { //从头到为,输出蛇身雹山x0dx0aPos(tail->x,tail->y);x0dx0aprintf("■");x0dx0atail=tail->next;x0dx0a}x0dx0a}x0dx0ax0dx0aint biteself()//判断是否咬到了自己x0dx0a{x0dx0asnake *self;x0dx0aself=head->next;x0dx0awhile(self!=NULL) {x0dx0aif(self->x==head->x && self->y==head->y) {x0dx0areturn 1;x0dx0a}x0dx0aself=self->next;x0dx0a}x0dx0areturn 0;x0dx0a}x0dx0ax0dx0avoid createfood()//随机出现食物x0dx0a{x0dx0asnake *food_1;x0dx0asrand((unsigned)time(NULL));x0dx0afood_1=(snake*)malloc(sizeof(snake));x0dx0awhile((food_1->x%2)!=0) { //保证其为偶数,使得食物能与蛇头对其x0dx0afood_1->x=rand()%52+2;x0dx0a}x0dx0afood_1->y=rand()%24+1;x0dx0aq=head;x0dx0awhile(q->next==NULL) {x0dx0aif(q->x==food_1->x && q->y==food_1->y) { //判断蛇身是否与食物重合x0dx0afree(food_1);x0dx0acreatefood();x0dx0a}x0dx0aq=q->next;x0dx0a}x0dx0aPos(food_1->x,food_1->y);x0dx0afood=food_1;x0dx0aprintf("■");x0dx0a}x0dx0ax0dx0avoid cantcrosswall()//不能穿墙x0dx0a{x0dx0aif(head->x==0 || head->x==56 ||head->y==0 || head->y==26) {x0dx0aendgamestatus=1;x0dx0aendgame();x0dx0a}x0dx0a}x0dx0ax0dx0avoid snakemove()//蛇前进,上U,下D,左L,右Rx0dx0a{x0dx0asnake * nexthead;x0dx0acantcrosswall();x0dx0ax0dx0anexthead=(snake*)malloc(sizeof(snake));x0dx0aif(status==U) {x0dx0anexthead->x=head->x;x0dx0anexthead->y=head->y-1;x0dx0aif(nexthead->x==food->x && nexthead->y==food->y) { //如果下一个有食物//x0dx0anexthead->next=head;x0dx0ahead=nexthead;x0dx0aq=head;x0dx0awhile(q!=NULL) {x0dx0aPos(q->x,q->y);x0dx0aprintf("■");x0dx0aq=q->next;x0dx0a}x0dx0ascore=score+add;x0dx0acreatefood();x0dx0a} else { //如果没有食物//x0dx0anexthead->next=head;x0dx0ahead=nexthead;x0dx0aq=head;x0dx0awhile(q->next->next!=NULL) {x0dx0aPos(q->x,q->y);x0dx0aprintf("■");x0dx0aq=q->next;x0dx0a}x0dx0aPos(q->next->x,q->next->y);x0dx0aprintf(" ");x0dx0afree(q->next);x0dx0aq->next=NULL;x0dx0a}x0dx0a}x0dx0aif(status==D) {x0dx0anexthead->x=head->x;x0dx0anexthead->y=head->y+1;x0dx0aif(nexthead->x==food->x && nexthead->y==food->y) { //有食物x0dx0anexthead->next=head;x0dx0ahead=nexthead;x0dx0aq=head;x0dx0awhile(q!=NULL) {x0dx0aPos(q->x,q->y);x0dx0aprintf("■");x0dx0aq=q->next;x0dx0a}x0dx0ascore=score+add;x0dx0acreatefood();x0dx0a} else { //没有食物x0dx0anexthead->next=head;x0dx0ahead=nexthead;x0dx0aq=head;x0dx0awhile(q->next->next!=NULL) {x0dx0aPos(q->x,q->y);x0dx0aprintf("■");x0dx0aq=q->next;x0dx0a}x0dx0aPos(q->next->x,q->next->y);x0dx0aprintf(" ");x0dx0afree(q->next);x0dx0aq->next=NULL;x0dx0a}x0dx0a}x0dx0aif(status==L) {x0dx0anexthead->x=head->x-2;x0dx0anexthead->y=head->y;x0dx0aif(nexthead->x==food->x && nexthead->y==food->y) { //有食物x0dx0anexthead->next=head;x0dx0ahead=nexthead;x0dx0aq=head;x0dx0awhile(q!=NULL) {x0dx0aPos(q->x,q->y);x0dx0aprintf("■");x0dx0aq=q->next;x0dx0a}x0dx0ascore=score+add;x0dx0acreatefood();x0dx0a} else { //没有食物x0dx0anexthead->next=head;x0dx0ahead=nexthead;x0dx0aq=head;x0dx0awhile(q->next->next!=NULL) {x0dx0aPos(q->x,q->y);x0dx0aprintf("■");x0dx0aq=q->next;x0dx0a}x0dx0aPos(q->next->x,q->next->y);x0dx0aprintf(" ");x0dx0afree(q->next);x0dx0aq->next=NULL;x0dx0a}x0dx0a}x0dx0aif(status==R) {x0dx0anexthead->x=head->x+2;x0dx0anexthead->y=head->y;x0dx0aif(nexthead->x==food->x && nexthead->y==food->y) { //有食物x0dx0anexthead->next=head;x0dx0ahead=nexthead;x0dx0aq=head;x0dx0awhile(q!=NULL) {x0dx0aPos(q->x,q->y);x0dx0aprintf("■");x0dx0aq=q->next;x0dx0a}x0dx0ascore=score+add;x0dx0acreatefood();x0dx0a} else { //没有食物x0dx0anexthead->next=head;x0dx0ahead=nexthead;x0dx0aq=head;x0dx0awhile(q->next->next!=NULL) {x0dx0aPos(q->x,q->y);x0dx0aprintf("■");x0dx0aq=q->next;x0dx0a}x0dx0aPos(q->next->x,q->next->y);x0dx0aprintf(" ");x0dx0afree(q->next);x0dx0aq->next=NULL;x0dx0a}x0dx0a}x0dx0aif(biteself()==1) { //判断是否会咬到自己x0dx0aendgamestatus=2;x0dx0aendgame();x0dx0a}x0dx0a}x0dx0ax0dx0avoid pause()//暂停x0dx0a{x0dx0awhile(1) {x0dx0aSleep(300);x0dx0aif(GetAsyncKeyState(VK_SPACE)) {x0dx0abreak;x0dx0a}x0dx0ax0dx0a}x0dx0a}x0dx0ax0dx0avoid gamecircle()//控制游戏x0dx0a{x0dx0ax0dx0aPos(64,15);x0dx0aprintf("不能穿墙,不能咬到自己\n");x0dx0aPos(64,16);x0dx0aprintf("用↑.↓.←.→分别控制蛇的移动.");x0dx0aPos(64,17);x0dx0aprintf("F1 为加速,F2 为减速\n");x0dx0aPos(64,18);x0dx0aprintf("ESC :退出游戏.space:暂停游戏.");x0dx0aPos(64,20);x0dx0a//x0dx0astatus=R;x0dx0awhile(1) {x0dx0aPos(64,10);x0dx0aprintf("得分:%d ",score);x0dx0aPos(64,11);x0dx0aprintf("每个食物得分:%d分",add);x0dx0aif(GetAsyncKeyState(VK_UP) && status!=D) {x0dx0astatus=U;x0dx0a} else if(GetAsyncKeyState(VK_DOWN) && status!=U) {x0dx0astatus=D;x0dx0a} else if(GetAsyncKeyState(VK_LEFT)&& status!=R) {x0dx0astatus=L;x0dx0a} else if(GetAsyncKeyState(VK_RIGHT)&& status!=L) {x0dx0astatus=R;x0dx0a} else if(GetAsyncKeyState(VK_SPACE)) {x0dx0apause();x0dx0a} else if(GetAsyncKeyState(VK_ESCAPE)) {x0dx0aendgamestatus=3;x0dx0abreak;x0dx0a} else if(GetAsyncKeyState(VK_F1)) {x0dx0aif(sleeptime>=50) {x0dx0asleeptime=sleeptime-30;x0dx0aadd=add+2;x0dx0aif(sleeptime==320) {x0dx0aadd=2;//防止减到1之后再加回来有错x0dx0a}x0dx0a}x0dx0a} else if(GetAsyncKeyState(VK_F2)) {x0dx0aif(sleeptime<350) {x0dx0asleeptime=sleeptime+30;x0dx0aadd=add-2;x0dx0aif(sleeptime==350) {x0dx0aadd=1; //保证最低分为1x0dx0a}x0dx0a}x0dx0a}x0dx0aSleep(sleeptime);x0dx0asnakemove();x0dx0a}x0dx0a}x0dx0ax0dx0avoid welcometogame()//开始界面x0dx0a{x0dx0aPos(40,12);x0dx0ax0dx0a//x0dx0aprintf("欢迎来到贪食蛇游戏!");x0dx0aPos(40,25);x0dx0a//x0dx0asystem("pause");x0dx0asystem("cls");x0dx0aPos(25,12);x0dx0aprintf("用↑.↓.←.→分别控制蛇的移动, F1 为加速,2 为减速\n");x0dx0aPos(25,13);x0dx0aprintf("加速将能得到更高的分数。\n");x0dx0asystem("pause");x0dx0asystem("cls");x0dx0a}x0dx0ax0dx0avoid endgame()//结束游戏x0dx0a{x0dx0ax0dx0asystem("cls");x0dx0aPos(24,12);x0dx0aif(endgamestatus==1) {x0dx0aprintf("对不起,您撞到墙了。游戏结束.");x0dx0a} else if(endgamestatus==2) {x0dx0aprintf("对不起,您咬到自己了。游戏结束.");x0dx0a} else if(endgamestatus==3) {x0dx0aprintf("您的已经结束了游戏。");x0dx0a}x0dx0aPos(24,13);x0dx0aprintf("您的得分是%d\n",score);x0dx0aexit(0);x0dx0a}x0dx0ax0dx0avoid gamestart()//游戏初始化x0dx0a{x0dx0asystem("mode con cols=100 lines=30");x0dx0awelcometogame();x0dx0acreatMap();x0dx0ainitsnake();x0dx0acreatefood();x0dx0a}x0dx0ax0dx0aint main()x0dx0a{x0dx0agamestart();x0dx0agamecircle();x0dx0aendgame();x0dx0areturn 0;x0dx0a}

㈣ C语言简易文字冒险游戏源代码

记忆游戏

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

#include<windows.h>

#defineN10

intmain()

{inti,k,n,a[N],b[N],f=0;

srand(time(NULL));

printf("按1开始 按0退出:_");

scanf("%d",&n);

system("cls");

while(n!=0)

{for(k=0;k<N;k++)a[k]=rand()%N;

printf(" [请您牢记看到颜色的顺序] ");

for(k=0;k<N;k++)

{switch(a[k])

{case0:system("color90");printf("0:淡蓝色 ");break;//淡蓝色

case1:system("colorf0");printf("1:白色 ");break;//白色

case2:system("colorc0");printf("2:淡红色 ");break;//淡红色

case3:system("colord0");printf("3:淡紫色 ");break;//淡紫色

case4:system("color80");printf("4:灰色 ");break;//灰色

case5:system("colore0");printf("5:黄色 ");break;//黄色

case6:system("color10");printf("6:蓝色 ");break;//蓝色

case7:system("color20");printf("7:绿色 ");break;//绿色

case8:system("color30");printf("8:浅绿色 ");break;//浅绿色

case9:system("color40");printf("9:红色 ");break;//红色

}

Sleep(1500);

system("colorf");//单个控制文字颜色

Sleep(100);

}

system("cls");

printf("0:淡蓝色,1:白色,2:淡红色,3:淡紫色,4:灰色,5:黄色,6:蓝色7:绿色,8:浅绿色,9:红色 ");

printf(" 请输入颜色的顺序:");

for(k=0;k<N;k++)scanf("%d",&b[k]);

for(k=0;k<N;k++)if(a[k]==b[k])f++;

if(f==0)printf("你的记忆弱爆了0 ");

elseif(f==1)printf("你的记忆有点弱1 ");

elseif(f<5)printf("你的记忆一般<5 ");

elseprintf("你的记忆力很强! ");

Sleep(2000);

system("cls");

printf(" 按0退出 按任意键继续游戏: ");

scanf("%d",&n);

system("cls");

}

return0;

}

注:DEVc++运行通过,每输入一个数字要加入一个空格。

㈤ 能在dev-c++上运行通过的扫雷,贪吃蛇,等小游戏的c语言代码

#include<bits/stdc++.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是延迟函数*/
}
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();
}

㈥ 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 ); }

㈦ 求C语言小游戏源程序

新手要方便写代码,可以收藏下面几个自编函数:

  1. gtxy (6, 3) //光标定位于窗口的第6列,第3行处(准备输出,行与列都是从0算起)

  2. Color (4, 0) //设置为红字配黑底 如 Color (10, 0)则是淡绿字配黑底

  3. yinc (1,0) //隐藏光标(第二个参数设为0就隐藏,没有光标闪烁,yinc代表隐藏)

  4. kou(80,25) //设定窗口缓冲区大小为80列,25行

    下面几个是库函数,不需自己编写,只要用#include包含就可以使用。

  5. SetConsoleTitle("俄罗斯方块"); //设置窗口左上角标题栏处出现"俄罗斯方块"5个字

  6. srand( (unsigned) time(NULL) ); //初始化随机数发生器

  7. n= rand( ) % 20; //产生随机数0-19中的一个. 如 rand( )%5 就产生0-4中的一个数

    SetConsoleTitle( )函数在<windows.h>里,srand( )函数与rand( )函数要配合用,

    就是同时要用,在<stdlib.h>里。如果 rand( )%10+1 就产生1-10之中的一个数。

  8. Sleep(300); //延时300毫秒(就是程序暂停300毫秒后继续运行)

  9. system("cls"); //清屏(把窗口里的内容全部清除,光标定于(0,0)位置处)

    这两个函数都在<windows.h>里。开头4个自编函数 编写如下:

void gtxy (int x, int y) //控制光标位置的函数

{ COORD pos;

pos.X = x;

pos.Y = y;

SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );

}

void Color (short ForeColor= 7, short BackGroundColor= 0) //设定颜色的函数

{ HANDLE hl = GetStdHandle ( STD_OUTPUT_HANDLE );

SetConsoleTextAttribute ( hl, ForeColor + BackGroundColor * 0x10 );

}

声明时原型可写 void Color (short x, short y);

void yinc (int x,int y) //隐藏光标的函数

{ CONSOLE_CURSOR_INFO gb={ x , y }; //gb代表光标

SetConsoleCursorInfo ( GetStdHandle(STD_OUTPUT_HANDLE), &gb );

}

void kou(int w,int h) //设置窗口大小的函数

{HANDLE hl=GetStdHandle ( STD_OUTPUT_HANDLE ) ;

COORD size={ w , h };

SetConsoleScreenBufferSize( hl , size );

SMALL_RECT rc={ 0, 0, w, h };

SetConsoleWindowInfo( hl, 1, &rc );

}

最后这个函数,参数w是宽h是高。里边5行中第一行定义了句柄型变量hl,并给它赋值。

第二行定义了坐标型结构体变量size,它的取值决定了缓冲区的大小。第三行就是使用

size的值设置好缓冲区大小。第四行定义了变量rc,它的值决定当前窗口显示的位置与

大小(不得超过缓冲区的大小)。前两个0,0是从缓冲区左上角0列0行位置处开始,后两

个参数可以小于w和h.比如rc={0,0,w-10,h-5}; 最后一行使用rc的值设置好窗口,中间

那个参数要为" 1 "或写“ true ”才有效。

㈧ 求一个简单的C语言游戏24点的编程代码。可以在WIN-TC上面运行的

刚修改了下,可以用了~~~~~~~挺好玩的

/*C++实现的扑克二十四点游戏*/
#include<iostream>
#include<string>
#include<time.h>
using namespace std;

#define NUM 1000
int j=2;//定义为全局变量
int randNum[NUM];//因为rand()函数有一定的缺陷,所以在程序中定义了randNum数组来存放随机数
//即使使用了种子函数srand(),由于程序运行时间比较短,也不太好设置种子。因此使用数组来存放随机数

class Poker
{
private:
int poker[53]; //扑克
int pokerValue[53]; //扑克代表的数值
string pokerName[53]; //扑克名

int money; //玩家钱数
int bet; //玩家的赌注

int pokerF[5]; //玩家手中的牌 F:Farmer L:Landlord
int pokerL[5]; //庄家手中的牌 F:Farmer L:Landlord
int pokerNumF; //玩家手中的牌数
int pokerNumL; //庄家手中的牌数
public:
Poker(); //构册散造函数,对牌初始化
void initPoker(); //洗牌,在每轮游戏开始前进行
string getPokerF(); //用字符串的形式乱团返回玩家的牌
string getPokerL(); //用字符串的形式返回庄家的牌
int getSumF(); //返回玩家牌的点数,用以判断是州陪氏否超过21点
int getSumL(); //返回庄家牌的点数
void farmerAsk(); //玩家要牌
void landlordAsk(); //庄家要牌
void inputBet(); //玩家输入赌注
void newGame(); //开始新游戏
void landlordProcess(); //在玩家不要牌时进行处理

};

Poker::Poker()
{
int i=0;
poker[0]=0;
for(i=1;i<=13;i++) //|
{ //|
poker[i]=i; //|用构造函数对牌初始化
poker[i+13]=i; //|
poker[i+26]=i; //|
poker[i+39]=i; //|
}//for结束

pokerValue[0]=0;
for(i=1;i<=52;i++)
{
if(poker[i]<=10) pokerValue[i]=poker[i];
else pokerValue[i]=10;
}//for结束

pokerName[0]="";
for(i=0;i<4;i++)
{
pokerName[1+13*i]="A";
pokerName[2+13*i]="2";
pokerName[3+13*i]="3";
pokerName[4+13*i]="4";
pokerName[5+13*i]="5";
pokerName[6+13*i]="6";
pokerName[7+13*i]="7";
pokerName[8+13*i]="8";
pokerName[9+13*i]="9";
pokerName[10+13*i]="10";
pokerName[11+13*i]="J";
pokerName[12+13*i]="Q";
pokerName[13+13*i]="K";
}//for结束

money=200; //玩家开始玩游戏时钱数是200
bet=0;

for(i=0;i<5;i++)
{
pokerF[i]=0; //|对pokerOfFarmer初始化
pokerL[i]=0; //|对pokerOfLandlord初始化
}

pokerNumF=0;//玩家手中的牌数初始化为0
pokerNumL=0;//庄家手中的牌数初始化为0

srand((int)time(0));
for(i=0;i<NUM;i++)
{
randNum[i]=rand()*51/32767+1;//产生随机数数组
}

}//构造函数Poker()结束
void Poker::initPoker()
{
cout<<"新一局游戏开始,开始洗牌>>>>>"<<endl;

pokerF[0]=randNum[j++]; //产生1-52的随机数
pokerF[1]=randNum[j++]; //产生1-52的随机数
pokerL[0]=randNum[j++]; //产生1-52的随机数
pokerL[1]=randNum[j++]; //产生1-52的随机数

pokerNumF=2;
pokerNumL=2;

cout<<"洗牌完成,你的牌为:"<<getPokerF()<<endl;
}//void Poker::initPoker()结束

string Poker::getPokerF()//用字符串的形式返回玩家的牌
{
int i;
string result="";

for(i=0;i<pokerNumF;i++)
result=result+pokerName[pokerF[i]]+" ";

return result;
}//string Poker::getPokerF()结束

string Poker::getPokerL()//用字符串的形式返回庄家的牌
{
int i;
string result="";

for(i=0;i<pokerNumL;i++)
result=result+pokerName[pokerL[i]]+" ";

return result;
}//string Poker::getPokerL()结束

int Poker::getSumF() //返回玩家的总点数
{
int result=0;

for(int i=0;i<pokerNumF;i++)
result=result+pokerValue[pokerF[i]];

return result;
}

int Poker::getSumL()//返回庄家的总点数
{

int result=0;

for(int i=0;i<pokerNumL;i++)
result=result+pokerValue[pokerL[i]];

return result;
}

void Poker::farmerAsk()
{
if(pokerNumF>=5)
{
cout<<"你的牌数已够5张,不能再要牌了"<<endl;
landlordProcess();
}
else
{
pokerF[pokerNumF++]=randNum[j++]; //产生1-52的随机数
cout<<"你的牌为:"<<getPokerF()<<endl;
if(getSumF()>24)
{
cout<<"你撑死了,你输了"<<bet<<"元"<<endl;
money=money-bet;
if(money<=0)
{
cout<<"你已经输光了,哈哈"<<endl;
cout<<"游戏结束"<<endl;
exit(0);
}
inputBet();
initPoker();
}
else if(getSumF()==24)
{
landlordProcess();
}
}
}

void Poker::landlordAsk()
{
if(pokerNumL>=5)
{
if(getSumF()>getSumL())
{
cout<<"庄家的牌为"<<getPokerL()<<endl;
cout<<"你赢了,你赢了"<<bet<<"元"<<endl;
money=money+bet;
inputBet();
initPoker();
}
else if(getSumF()==getSumL())
{
cout<<"庄家的牌为"<<getPokerL()<<endl;
cout<<"平手"<<endl;
inputBet();
initPoker();
}
else if(getSumF()<getSumL())
{
cout<<"庄家的牌为"<<getPokerL()<<endl;
cout<<"你输了,你输了"<<bet<<"元"<<endl;
money=money-bet;
if(money<=0)
{
cout<<"你已经输光了,哈哈"<<endl;
cout<<"游戏结束"<<endl;
exit(0);
}
inputBet();
initPoker();
}
}
else
{
pokerL[pokerNumL++]=randNum[j++]; //产生1-52的随机数
if(getSumL()>24)
{
cout<<"庄家的牌为"<<getPokerL()<<endl;
cout<<"庄家撑死了,你赢了"<<bet<<"元"<<endl;
money=money+bet;
inputBet();
initPoker();
}
else landlordProcess();
}
}
void Poker::inputBet()
{
cout<<"你现在有"<<money<<"元,请输入赌注:";
do
{
cin>>bet;
if(bet>money)
cout<<"笨蛋,你没那么多钱,少来,重新输入吧:";
}while(bet>money);

}

void Poker::newGame()
{
inputBet();
initPoker();
cout<<"你得到的牌为:"<<getPokerF()<<endl;
}

void Poker::landlordProcess()
{
if(getSumL()>=17)
{
if(getSumL()>getSumF())
{
cout<<"庄家的牌为"<<getPokerL()<<endl;
cout<<"庄家获胜,你输了"<<bet<<"元"<<endl;
money=money-bet;
if(money<=0)
{
cout<<"你已经输光了,哈哈"<<endl;
cout<<"游戏结束"<<endl;
exit(0);
}
inputBet();
initPoker();
}
else if(getSumF()==getSumL())
{
cout<<"庄家的牌为"<<getPokerL()<<endl;
cout<<"本次游戏平手"<<endl;
inputBet();
initPoker();
}
else
{
cout<<"庄家的牌为"<<getPokerL()<<endl;
cout<<"你赢了,你赢了"<<bet<<"元"<<endl;
money=money+bet;
inputBet();
initPoker();
}
}
else
{
landlordAsk();
}
}

int main()
{
int choose=1;
Poker poker;
cout<<"****************** 欢迎玩二十四点游戏 ******************"<<endl<<endl;
poker.inputBet();
poker.initPoker(); //洗牌

while(choose==1||choose==2||choose==3||choose==4)
{
cout<<"1.要牌 2.不要牌 3.重新开始 4.退出 >>请输入数字选择操作:";
cin>>choose;
if(choose==1) poker.farmerAsk();
else if(choose==2) poker.landlordProcess();
else if(choose==3) poker.newGame();
else if(choose==4) exit(0);
}

return 0;
}//main函数结束

㈨ C语言 游戏 代码

“坑人的无限”(一):

#include<iostream>
#include<windows.h>
#include<ctime>
#include<cstdlib>
#include<conio.h>
using namespace std;
int a;
class Screen
{
private:
int n;
public:
Screen()
{
n=5;
}
void move1()//注意只是循环输出各个数字,不能对循环输出再进行循环(如果对循环输出0123456789再进行循环,则move1就变成一个无限循环的函数,则下面的screen循环就进行不下去了)
{
for(int i=0;i<10;++i)
{
cout<<char(1)<<" ";
}
}
void move2()
{
char i;
for(i='a';i<='z';++i)
{
cout<<char(1)<<" ";
}
}
void screen()
{
int t;
while(!kbhit())
{
t=time(0)%(2*n);//如果是放在循环外面的话,time(0)的值就一直不变,放在循环里面,一秒钟进行一次判断,一秒钟进行一次循环
if(t<n)
move1();
else
move2();
}
}
};
int main(){
cout<<"欢迎来到“无限 ”游戏"<<char(1)<<endl;
cout<<"下面会输出无限个笑脸"<<char(1)<<endl;
cout<<"按'enter'取消"<<endl;
Sleep(4000);
Screen s;
s.screen();
cout<<endl<<"哈哈!!控制不住了吧!"<<char(1)<<endl;
cout<<"接下来会更让你丧心病狂的!"<<char(1)<<endl;
cout<<"但是坚持过后必有彩蛋!!!!!!加油!!";
cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
Sleep(10000);
for(int as=0;as<=50;as++){
for(int i=0;i<=100;i++){
for(int j=0;j<=10;j++){
cout<<char(2)<<" ";
}
cout<<endl;
}
for(int i=0;i<=100;i++){
for(int j=0;j<=10;j++){
cout<<char(1)<<" ";
}
cout<<endl;
}
}
cout<<"你居然坚持下来了!"<<char(1)<<" "<<char(2)<<endl<<"不可思议呀!"<<endl;
for(int i=0;i<=10;i++){
cout<<"-----------------------------------------------"<<endl;
}
cout<<"敬请期待!等待无限游戏(二)!";
return 0;
}

㈩ c语言编程 游戏开始之前的界面 点击play 开始游戏

开始游戏,然后玩游戏....