首先声明,真的是作者能力有限,做出来了一个很lou的游戏
不过如果你喜欢,请动动小手点一个赞吧
实现原理
原理部分很简单,首先是gotoxy函数,用来调整光标的位置
void gotoxy(int x,int y){
COORD p;
HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
p.X=x;
p.Y=y;
SetConsoleCursorPosition(handle,p);
}
然后呢,使用getch函数,直接输入不用按回车
#include<conio.h>
char m;
m=getch();
然后就是判断m为什么字符,如果不是特定的字符就挖掘
switch(m){
case 'w':{
bb--;
gotoxy(aa,bb);
break;
}
case 's':{
bb++;
gotoxy(aa,bb);
break;
}
case 'a':{
aa--;
gotoxy(aa,bb);
break;
}
case 'd':{
aa++;
gotoxy(aa,bb);
break;
}
default:{
cout<<' ';
gotoxy(aa,bb);
}
最后呢就是出界判断
if(aa>2*c+1) aa=1;
if(aa<1) aa=2*c+1;
if(bb>k) bb=1;
if(bb<1) bb=k;
代码部分
好的,接下来我们上源码
#include<bits/stdc++.h>
#include<time.h>
#include<windows.h>
#include<conio.h>
using namespace std;
void gotoxy(int x,int y){
COORD p;
HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
p.X=x;
p.Y=y;
SetConsoleCursorPosition(handle,p);
}
int main(){
int c,k;
char a[3];
cout<<"请输入你要挖掘的字符:\n";
cin>>a;
cout<<"\n请输入你地图的长宽\n";
cin>>c>>k;
cout<<"w上移 s下移 a左移 d右移 任意键挖掘\n";
Sleep(2000);
system("cls");
for(int i=1;i<=2*c;i+=2){
for(int j=1;j<=k;j++){
gotoxy(i,j);
cout<<a<<' ';
}
}
gotoxy(1,1);
char m;
int aa=1,bb=1;
while(1){
m=getch();
switch(m){
case 'w':{
bb--;
gotoxy(aa,bb);
break;
}
case 's':{
bb++;
gotoxy(aa,bb);
break;
}
case 'a':{
aa-=2;
gotoxy(aa,bb);
break;
}
case 'd':{
aa+=2;
gotoxy(aa,bb);
break;
}
default:{
cout<<" ";
aa-=2;
gotoxy(aa,bb);
}
}
if(aa>2*c+1) aa=1;
if(aa<1) aa=2*c+1;
if(bb>k) bb=1;
if(bb<1) bb=k;
}
return 0;
}
好了,今天就到这里,谢谢大家!