C++控制台游戏实现
最新推荐文章于 2024-02-08 19:15:09 发布

--子非鱼-- 于 2012-12-31 18:26:33 发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
#include<iostream>
#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=x*2;
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]==0 || snake[0][0]==N || snake[0][1]==0 || snake[0][1]==N)
{
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/20)
{
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();
return 0;
}
如果在vc++6.0上运行,需要变成“.h”的头文件!
相关知识
C++面向对象宠物小精灵对战系统设计教程
IDEA+Java控制台实现宠物管理系统
a=b++,c++和a=(b++,c++)的区别
Qt实现的宠物小精灵对战游戏阶段二
基于C++实现平台类对战游戏
饥荒控制台代码大全 饥荒控制台代码怎么开
C++ 基础教程
C++动物运动会源代码资源
基于SSM+mysql的宠物医院信息管理系统设计与实现(源码+设计文档+部署说明+视频演示).zip
C的课程规范设计贪吃蛇小游戏内附完整源码及附件.doc
原文链接: C++控制台游戏实现 https://www.mcbbbk.com/newsview961316.html
| 上一篇: 创业最前线:90后隐秘的爬宠圈:... | 下一篇: python简单游戏——贪吃蛇 |





