求几个C++在VC6.0环境下编写的游戏小程序的源代码实例教程
发布网友
发布时间:2022-04-23 09:27
我来回答
共5个回答
热心网友
时间:2022-04-23 10:56
在百度上看到的一个贪吃蛇游戏
#include<iostream.h>
#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#define N 21
void gotoxy(int x,int y)//位置函数
{
COORD pos;
pos.X=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void color(int a)//颜色函数
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果)
{
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;
}
gotoxy(N+3,1);//显示信息
color(20);
cout<<"按 W S A D 移动方向"<<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;
}
int main()
{
int i,j;
int** snake=NULL;
int apple[2];
int score=0;
int tail[2];
int len=3;
char ch='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<<"Game over"<<endl;
for(i=0;i<len;i++)
free(snake[i]);
Sleep(INFINITE);
exit(0);
}
}
return 0;
}
2
|评论(3)
向TA求助
回答者: C加语言初学者 | 五级采纳率:42%
擅长领域: C/C++ 华语流行乐
参加的活动: 暂时没有参加的活动
热心网友
时间:2022-04-23 12:14
百度,看到一条蛇游戏
#包括ltiostream.h的>
BR p>定义N 21
位置
无效gotoxy(X,Y)/ /函数
COORD位置; BR p> pos.X = 2 * X;
pos.Y = Y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),POS)
}
无效的颜色(INT)/ /颜色功能
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE) ,A);
}
无效的init(苹果[2])/ /初始化函数(初始化长城显示器的信息,苹果)
{
我;/ /初始化墙
长城[N +2] [N + 2] = {{0}}(i = 1; <= N + + )
{
(J = 1; <= N; J + +)
墙[I] [J] = 1; BR p>}
颜色(11);
(i = 0; I <N +2,我+ +)
BR /> {
(J = 0,J <N +2 + +)
{
(墙[I] [J ])
*<<
</其他*<“”;
}
苑< <endl;
}
gotoxy(N +3,1);/ /显示信息
颜色(20);
*<<“<< endl WSAD方向的运动;
gotoxy(N +3,2);
颜色(20)
cout <<“请按任意键暂停<endl;
gotoxy(N +3,3);
颜色(20); BR p> COUT <评分:“<< endl;
>苹果[0] = RAND()的%N +1 ;/ /苹果
苹果1] = RAND()%N + 1;
gotoxy(苹果[0],苹果[1]);
颜色(12);
BR /> cout <<“请,OE”<< endl;
}
:()
{
INT I,J
**蛇= NULL;
解释苹果[2];
解释得分= 0;
时间
解释[2];
诠释莱恩? ? ;
字符路='P'
函数srand((无符号)时间(NULL));的init(苹果);
蛇(**)的realloc(蛇,sizeof(*)的* LEN);
为(i = 0; <LEN + +)
蛇[I] =( *)的malloc(sizeof(廉政公署)的* 2);
为(i = 0; <LEN,我+ +)
{
蛇[I] [0] = N / 2;
蛇[I] [1] = N / 2 + I
gotoxy(蛇[I] [ 0],蛇[I] [1]);(14);
*<<“面向对象”<< endl;
} BR p>(1)/ /进入消息循环
{
尾[0] =蛇[LEN-1] [0]; / >>尾[1] =蛇[LEN-1] [1];
gotoxy(尾[0],尾[1]);
颜色(11 );
*<<“,”<< endl;
(I = LEN-1> 0,I - )
{
蛇[I] [0] =蛇[I-1] [0;
蛇[I] [1] =蛇[I -1] [1];
gotoxy(蛇[I] [0],蛇[I] [1]); <BR /彩色(14)</*<<“面向对象”<< endl;
}
(kbhit())
{
</ gotoxy(0,N +2);
CH = getche();
}
开关(CH)
BR /> {
'W':[0] [1] - 的蛇;突破;
情况下,'S':蛇0 [1] + +;突破;
[0] [0] - 一个突破;
情况下,“E”:蛇[0] [0 + +;突破的情况下,“蛇; BR p>默认值:打破;
}
gotoxy(蛇[0] [0],蛇[0] [1]); ...... /
颜色(14);
*<<“OO”<< endl;
睡眠(ABS(200-0.5 *分数)); ==苹果,
(蛇[0] [0] ==苹果[0] &&蛇[1] [1] [1])/ /蛇的分数吃苹果加上长的蛇加1
{
得分+ +;
LEN + +;
蛇=(**)的realloc (蛇中,sizeof(*)* LEN);
蛇[LEN-1] =(*)的malloc(sizeof(廉政)* 2);
苹果[0 = RAND()%N +1;
苹果[1] = RAND()%N +1;
gotoxy(苹果[0],苹果[1] );
颜色(12);
*<<“,OE”<< endl;
gotoxy(N +5,3)
颜色(20);
*<<得分<< endl;
}
(蛇[ 1] [1] == 0 | |蛇[1] [1] == | |蛇[0] [0] == 0 | |蛇] [0] == N)/ /打围栏失败...... / a>
{
2,N / 2); p>颜色(30);
*<< “”<< endl;
(i = 0; <LEN,我+ +)
,免费比赛结束(蛇[]);
睡眠(无限);
出口(0);
}
}
回报; }
2
|评论(3)
C加语言初学者|五采纳率:42%的TA帮助
受访者:BR p>专业领域:C / C + +中国流行
参与活动:参与活动
热心网友
时间:2022-04-23 13:49
http://task.zhubajie.com/1871073/n15o1.html
热心网友
时间:2022-04-23 15:40
邮箱,我发给你追问654770660@qq.com
热心网友
时间:2022-04-23 17:48
最经典的 c/++下的游戏程序源码就是 圣剑传说,它的代码不仅是开源,而且很多人做了注释,在网上搜索就能搜索到的,没事来0x30百度贴吧耍耍,共同交流分享。