rt 求意见QAQ
#include <bits/stdc++.h>
#include <windows.h>
#include <ctime>
#include <conio.h>
#include <cstdlib>
#define maxn 20
using namespace std ;
char Map[maxn + 100][maxn + 100] ;
void print () {
for ( int i = 1 ; i <= maxn ; i ++, puts ( "" ) )
for ( int j = 1 ; j <= maxn ; j ++ )
printf ( "%c ", Map[i][j] ) ;
}
int main () {
puts ( "欢迎来到沙盒游戏 'C++的世界' " ) ;
puts ( "游戏简绍:" ) ;
puts ( "你可以随意创造地形在这个地图中\n比如建造障碍物就可以按 1 然后再选择一个方向建造 (WASD)\n移动就是WASD\n毁坏物体可以按 2 然后再选择一个方向毁坏 (WASD)\n剩下的功能一会还会更新哟 ") ;
puts ( "墙面用字符 & 来表示, 人物用字符 @ 来表示, 地面用 . 表示 " ) ;
puts ( "输入 OK 开始游戏 : " ) ;
string input ; cin >> input ;
if ( input == "OK" ) {
system ( "CLS" ) ;
memset ( Map, '.', sizeof Map ) ;
for ( int i = 1 ; i <= maxn ; i ++ ) Map[i][1] = Map[1][i] = Map[maxn][i] = Map[i][maxn] = '#' ;
int x = 2, y = 2 ;
Map[x][y] = '@' ;
print () ;
while ( 1 ) {
if ( kbhit () ) {
char ch = getch () ;
if ( ch == 'W' && Map[x - 1][y] == '.' ) Map[x][y] = '.', Map[-- x][y] = '@' ;
else if ( ch == 'A' && Map[x][y - 1] == '.' ) Map[x][y] = '.', Map[x][-- y] = '@' ;
else if ( ch == 'S' && Map[x + 1][y] == '.' ) Map[x][y] = '.', Map[++ x][y] = '@' ;
else if ( ch == 'D' && Map[x][1 + y] == '.' ) Map[x][y] = '.', Map[x][++ y] = '@' ;
if ( ch == '1' ) {
ch = getch () ;
if ( ch == 'W' && Map[x - 1][y] == '.' ) Map[x - 1][y] = '&' ;
else if ( ch == 'S' && Map[x + 1][y] == '.' ) Map[x + 1][y] = '&' ;
else if ( ch == 'A' && Map[x][y - 1] == '.' ) Map[x][y - 1] = '&' ;
else if ( ch == 'D' && Map[x][1 + y] == '.' ) Map[x][y + 1] = '&' ;
}
if ( ch == '2' ) {
ch = getch () ;
if ( ch == 'W' && Map[x - 1][y] == '&' ) Map[x - 1][y] = '.' ;
else if ( ch == 'S' && Map[x + 1][y] == '&' ) Map[x + 1][y] = '.' ;
else if ( ch == 'A' && Map[x][y - 1] == '&' ) Map[x][y - 1] = '.' ;
else if ( ch == 'D' && Map[x][1 + y] == '&' ) Map[x][y + 1] = '.' ;
}
system ( "CLS" ) ;
print () ;
}
}
} else puts ( "我相信你按错了doge" ) ;
return 0 ;
}