推箱子
#include <cstdio> #include <windows.h> #include <conio.h> char a[20][20]={"##########", "## ###", "##O### #", "# S O O #", "# **# O ##", "##**# ##", "##########"}; void Prepare() { // 设置颜色 // system("color f0"); // 隐藏光标 // HANDLE hOut; CONSOLE_CURSOR_INFO curInfo; hOut=GetStdHandle(STD_OUTPUT_HANDLE); curInfo.dwSize=1; curInfo.bVisible=0; SetConsoleCursorInfo(hOut,&curInfo); // 设置标题 // SetConsoleTitle("推箱子"); } void Welcome() { printf("\n\n 推 箱 子"); printf("\n\n 请按任意键开始"); getch(); system("cls"); } void Set() { HANDLE hOut; COORD pos={0,0}; hOut=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hOut,pos); } int main() { Prepare(); Welcome(); int x=3,y=2; char ch; int cnt=0; for(int i=0;i<=6;i++) puts(a[i]); while(1) { ch=getch(); if(ch==-32) { ch=getch(); if(ch==80) { if(a[x+1][y]==' ') { a[x][y]=' '; x++; a[x][y]='S'; } else if(a[x+1][y]=='O') { if(a[x+2][y]==' ') { a[x][y]=' '; x++; a[x][y]='S'; a[x+1][y]='O'; } else if(a[x+2][y]=='*') { a[x][y]=' '; x++; a[x][y]='S'; a[x+1][y]=' '; cnt++; } } } else if(ch==72) { if(a[x-1][y]==' ') { a[x][y]=' '; x--; a[x][y]='S'; } else if(a[x-1][y]=='O') { if(a[x-2][y]==' ') { a[x][y]=' '; x--; a[x][y]='S'; a[x-1][y]='O'; } else if(a[x-2][y]=='*') { a[x][y]=' '; x--; a[x][y]='S'; a[x-1][y]=' '; cnt++; } } } else if(ch==75) { if(a[x][y-1]==' ') { a[x][y]=' '; y--; a[x][y]='S'; } else if(a[x][y-1]=='O') { if(a[x][y-2]==' ') { a[x][y]=' '; y--; a[x][y]='S'; a[x][y-1]='O'; } else if(a[x][y-2]=='*') { a[x][y]=' '; y--; a[x][y]='S'; a[x][y-1]=' '; cnt++; } } } else if(ch==77) { if(a[x][y+1]==' ') { a[x][y]=' '; y++; a[x][y]='S'; } else if(a[x][y+1]=='O') { if(a[x][y+2]==' ') { a[x][y]=' '; y++; a[x][y]='S'; a[x][y+1]='O'; } else if(a[x][y+2]=='*') { a[x][y]=' '; y++; a[x][y]='S'; a[x][y+1]=' '; cnt++; } } } } Set(); for(int i=0;i<=6;i++) puts(a[i]); if(cnt==4) break; } printf("你赢了!"); Sleep(10000); return 0; }
主要知识点
1.system(“cls”):清空输出。
2.隐藏光标。
3.getch():获得一个字符,不用回车。