首页 分享 C++控制台游戏实现

C++控制台游戏实现

来源:萌宠菠菠乐园 时间:2025-01-03 17:42

最新推荐文章于 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简单游戏——贪吃蛇

推荐分享