上次的推箱子教程后,有小伙伴說希望發添加顏色的代碼,那么今天小編就來說一說顏色和一些其他知識:
關于讀取字符
1.getchar()
上次說到需要輸入按鍵“w,a,s,d”來使小人移動,但還不能每次輸入后都按一下回車,那么今天又是講干貨的一天:
若要讀取字符,我們可以:
char a;
cin>>a;
或是c語言的:
char a;
scanf("%c",&a);
但其實我們還可以用其他方法:
char a;
a=getchar();
a=getchar();與scanf("%c",&a);的作用是完全一樣的,但是學過演算法的同學都知道,當遇到回圈時候a=getchaar();就會出問題,這是因為:getchar()的作用是從stdin流中讀入一個字符,也就是說,如果stdin有資料的話不用輸入它就可以直接讀取了,第一次getchar()時,確實需要人工的輸入,但是如果你輸了多個字符,以后的getchar()再執行時就會直接從緩沖區中讀取了,實際上是 輸入設備->記憶體緩沖區->程式getchar,你按的鍵是放進緩沖區了,然后供程式getchar(),當遇到回圈時,多次的getchar()會受到回車的影響,因為上一次回圈輸入時你按下了回車,所以下一次回圈到getchar()時就會讀取你上一次的“\n”,如果需要取消’\n’的影響,可以用getchar();來清除,這里getchar();只是取得了’\n’但是并沒有賦給任何字符變數,所以不會有影響,相當于清除了這個字符,而且getchar()會帶有回顯,你如果連續輸入三次a,并將讀取的內容輸入,將會看到aaaa,這就是getchar()的回顯效果,
2.getche()
getche()也是用來讀取字符,用法與getchar()一樣,
char a;
a=getche();
但是getche()可是省略我們輸入的那一次回車,代碼:
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
char a;
a=getche();
cout<<"你剛輸入了"<<a;
}
當你輸入了5后會立刻顯示”你剛輸入了5“,并且還是帶有回顯,

3.getch()
接下來就是上次推箱子中講到的getch()了,getch()的輸入既不需要按下回車,結果也不會帶有回顯,當考慮到做游戲,做選單或者一些應用類程式時還是比較實用的,
下面總結一下,
getchar()讀取一個字符,輸入后需要等待“Enter”才能讀取,并且帶有回顯,
getche()讀取一個字符,輸入后不需要等待“Enter”,直接讀取,并且帶有回顯,
getch()讀取一個字符,輸入后不需要等待“Enter”才能讀取,沒有回顯,
getche()和getch()是很實用的讀取字符代碼可以用來開發應用游戲等,但是如果是搞競賽和演算法的同學不要去使用,這是無效的代碼,
關于顏色
顏色的代碼也很簡單,不需要特殊的頭檔案
system("color a");
在你的代碼開頭加上它,再運行,,你會發現字變綠了,
如果加上:
system("color a0");
哇!好綠哇!
color即是改變顏色的代碼,后面的數字與color用空格隔開,并且數字是16進制的,第一個數是背景色,第二個數是字的顏色,如果單獨一個數就是字的顏色,
這里是16進制數分別代表的顏色
0黑色
1藍色
2綠色
3湖藍色
4紅色
5紫色
6黃色
7白色
8灰色
9淡藍色
A淡綠色
B淡淺綠色
C淡紅色
D淡紫色
E淡黃色
F亮白色
過關變色的推箱子
有了今天的顏色代碼,就可以在你的推箱子中加上色彩了,下面是我的前四關變色推箱子(函式版):
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
using namespace std;
void check1(char a[][20])
{
if(a[6][3]=='O')
a[6][3]='@';
if(a[3][6]=='O')
a[3][6]='@';
if(a[9][7]=='O')
a[9][7]='@';
if(a[6][11]=='O')
a[6][11]='@';
if(a[6][3]==' ')
a[6][3]='*';
if(a[3][6]==' ')
a[3][6]='*';
if(a[9][7]==' ')
a[9][7]='*';
if(a[6][11]==' ')
a[6][11]='*';
}
void check2(char a[][20])
{
if(a[5][9]=='O')
a[5][9]='@';
if(a[6][9]=='O')
a[6][9]='@';
if(a[7][9]=='O')
a[7][9]='@';
if(a[5][9]==' ')
a[5][9]='*';
if(a[6][9]==' ')
a[6][9]='*';
if(a[7][9]==' ')
a[7][9]='*';
}
void check3(char a[][20])
{
if(a[6][4]=='O')
a[6][4]='@';
if(a[6][5]=='O')
a[6][5]='@';
if(a[7][4]=='O')
a[7][4]='@';
if(a[7][5]=='O')
a[7][5]='@';
if(a[6][4]==' ')
a[6][4]='*';
if(a[6][5]==' ')
a[6][5]='*';
if(a[7][4]==' ')
a[7][4]='*';
if(a[7][5]==' ')
a[7][5]='*';
}
void check4(char a[][20])
{
if(a[7][3]=='O')
a[7][3]='@';
if(a[8][3]=='O')
a[8][3]='@';
if(a[8][4]=='O')
a[8][4]='@';
if(a[8][5]=='O')
a[8][5]='@';
if(a[8][6]=='O')
a[8][6]='@';
if(a[7][3]==' ')
a[7][3]='*';
if(a[8][3]==' ')
a[8][3]='*';
if(a[8][4]==' ')
a[8][4]='*';
if(a[8][5]==' ')
a[8][5]='*';
if(a[8][6]==' ')
a[8][6]='*';
}
void first()
{
a:
char a[20][20]={" ",
" ",
" ### ",
" #*# ",
" # # ",
" ####O######",
" #* OH O *#",
" #####O#####",
" # # ",
" #*# ",
" ### "};
system("cls");
for(int i=0;i<=11;i++)
{
puts(a[i]);
}
int x,y;
x=6,y=7;
while(1)
{
char z;
z=getch();
if(z=='w')
{
if(a[x-1][y]!='#')
{
if(a[x-2][y]!='#'&&a[x-1][y]=='O'&&a[x-2][y]!='O'&&a[x-2][y]!='@')
{
a[x][y]=' ';
x--;
a[x][y]='H';
a[x-1][y]='O';
}
else if(a[x-2][y]!='#'&&a[x-1][y]=='@'&&a[x-2][y]!='O'&&a[x-2][y]!='@'&&a[x-2][y]!=' ')
{
a[x][y]=' ';
x--;
a[x][y]='H';
a[x-1][y]='@';
}
else if(a[x-2][y]!='#'&&a[x-1][y]=='@'&&a[x-2][y]!='O'&&a[x-2][y]!='@'&&a[x-2][y]==' ')
{
a[x][y]=' ';
x--;
a[x][y]='H';
a[x-1][y]='O';
}
else if(a[x-1][y]!='O'&&a[x-1][y]!='@')
{
a[x][y]=' ';
x--;
a[x][y]='H';
}
}
}
if(z=='a')
{
if(a[x][y-1]!='#')
{
if(a[x][y-2]!='#'&&a[x][y-1]=='O'&&a[x][y-2]!='O'&&a[x][y-2]!='@')
{
a[x][y]=' ';
y--;
a[x][y]='H';
a[x][y-1]='O';
}
else if(a[x][y-2]!='#'&&a[x][y-1]=='@'&&a[x][y-2]!='O'&&a[x][y-2]!='@'&&a[x][y-2]!=' ')
{
a[x][y]=' ';
y--;
a[x][y]='H';
a[x][y-1]='@';
}
else if(a[x][y-2]!='#'&&a[x][y-1]=='@'&&a[x][y-2]!='O'&&a[x][y-2]!='@'&&a[x][y-2]==' ')
{
a[x][y]=' ';
y--;
a[x][y]='H';
a[x][y-1]='O';
}
else if(a[x][y-1]!='O'&&a[x][y-1]!='@')
{
a[x][y]=' ';
y--;
a[x][y]='H';
}
}
}
if(z=='d')
{
if(a[x][y+1]!='#')
{
if(a[x][y+2]!='#'&&a[x][y+1]=='O'&&a[x][y+2]!='O'&&a[x][y+2]!='@')
{
a[x][y]=' ';
y++;
a[x][y]='H';
a[x][y+1]='O';
}
else if(a[x][y+2]!='#'&&a[x][y+1]=='@'&&a[x][y+2]!='@'&&a[x][y+2]!='O'&&a[x][y+2]!=' ')
{
a[x][y]=' ';
y++;
a[x][y]='H';
a[x][y+1]='@';
}
else if(a[x][y+2]!='#'&&a[x][y+1]=='@'&&a[x][y+2]!='@'&&a[x][y+2]!='O'&&a[x][y+2]==' ')
{
a[x][y]=' ';
y++;
a[x][y]='H';
a[x][y+1]='O';
}
else if(a[x][y+1]!='O'&&a[x][y+1]!='@')
{
a[x][y]=' ';
y++;
a[x][y]='H';
}
}
}
if(z=='s')
{
if(a[x+1][y]!='#')
{
if(a[x+2][y]!='#'&&a[x+1][y]=='O'&&a[x+2][y]!='O'&&a[x+2][y]!='@')
{
a[x][y]=' ';
x++;
a[x][y]='H';
a[x+1][y]='O';
}
else if(a[x+2][y]!='#'&&a[x+1][y]=='@'&&a[x+2][y]!='O'&&a[x+2][y]!='@'&&a[x+2][y]!=' ')
{
a[x][y]=' ';
x++;
a[x][y]='H';
a[x+1][y]='@';
}
else if(a[x+2][y]!='#'&&a[x+1][y]=='@'&&a[x+2][y]!='O'&&a[x+2][y]!='@'&&a[x+2][y]==' ')
{
a[x][y]=' ';
x++;
a[x][y]='H';
a[x+1][y]='O';
}
else if(a[x+1][y]!='O'&&a[x+1][y]!='@')
{
a[x][y]=' ';
x++;
a[x][y]='H';
}
}
}
if(z=='r')
goto a;
check1(a);
if(a[6][3]=='@'&&a[6][11]=='@'&&a[9][7]=='@'&&a[3][6]=='@')
break;
system("cls");
for(int i=0;i<=11;i++)
{
puts(a[i]);
}
}
system("cls");
cout<<"you win!";
Sleep(3000);
}
void second()
{
b:
system("color 2");
char a[20][20]={" ",
" ",
" ##### ",
" #H # ",
" # OO# ### ",
" # O # #*# ",
" ### ###*# ",
" ## *# ",
" # # # ",
" # #### ",
" ##### ",};
system("cls");
for(int i=0;i<=11;i++)
{
puts(a[i]);
}
int x,y;
x=3,y=3;
while(1)
{
char z;
z=getch();
if(z=='r')
goto b;
if(z=='w')
{
if(a[x-1][y]!='#')
{
if(a[x-2][y]!='#'&&a[x-1][y]=='O'&&a[x-2][y]!='O'&&a[x-2][y]!='@')
{
a[x][y]=' ';
x--;
a[x][y]='H';
a[x-1][y]='O';
}
else if(a[x-2][y]!='#'&&a[x-1][y]=='@'&&a[x-2][y]!='O'&&a[x-2][y]!='@')
{
a[x][y]=' ';
x--;
a[x][y]='H';
a[x-1][y]='@';
}
else if(a[x-1][y]!='O'&&a[x-1][y]!='@')
{
a[x][y]=' ';
x--;
a[x][y]='H';
}
}
}
if(z=='a')
{
if(a[x][y-1]!='#')
{
if(a[x][y-2]!='#'&&a[x][y-1]=='O'&&a[x][y-2]!='O'&&a[x][y-2]!='@')
{
a[x][y]=' ';
y--;
a[x][y]='H';
a[x][y-1]='O';
}
else if(a[x][y-2]!='#'&&a[x][y-1]=='@'&&a[x][y-2]!='O'&&a[x][y-2]!='@')
{
a[x][y]=' ';
y--;
a[x][y]='H';
a[x][y-1]='@';
}
else if(a[x][y-1]!='O'&&a[x][y-1]!='@')
{
a[x][y]=' ';
y--;
a[x][y]='H';
}
}
}
if(z=='d')
{
if(a[x][y+1]!='#')
{
if(a[x][y+2]!='#'&&a[x][y+1]=='O'&&a[x][y+2]!='O'&&a[x][y+2]!='@')
{
a[x][y]=' ';
y++;
a[x][y]='H';
a[x][y+1]='O';
}
else if(a[x][y+2]!='#'&&a[x][y+1]=='@'&&a[x][y+2]!='@'&&a[x][y+2]!='O')
{
a[x][y]=' ';
y++;
a[x][y]='H';
a[x][y+1]='@';
}
else if(a[x][y+1]!='O'&&a[x][y+1]!='@')
{
a[x][y]=' ';
y++;
a[x][y]='H';
}
}
}
if(z=='s')
{
if(a[x+1][y]!='#')
{
if(a[x+2][y]!='#'&&a[x+1][y]=='O'&&a[x+2][y]!='O'&&a[x+2][y]!='@')
{
a[x][y]=' ';
x++;
a[x][y]='H';
a[x+1][y]='O';
}
else if(a[x+2][y]!='#'&&a[x+1][y]=='@'&&a[x+2][y]!='O'&&a[x+2][y]!='@')
{
a[x][y]=' ';
x++;
a[x][y]='H';
a[x+1][y]='@';
}
else if(a[x+1][y]!='O'&&a[x+1][y]!='@')
{
a[x][y]=' ';
x++;
a[x][y]='H';
}
}
}
check2(a);
if(a[5][9]=='@'&&a[6][9]=='@'&&a[7][9]=='@')
break;
system("cls");
for(int i=0;i<=11;i++)
{
puts(a[i]);
}
}
system("cls");
cout<<"you win!";
Sleep(3000);
}
void third()
{
c:
system("color 1");
char a[20][20]={" ",
" ",
" ####### ",
" # ### ",
" ##O### # ",
" # H O O # ",
" # **# O ## ",
" ##**# # ",
" ######## ",
" ",
" ",};
system("cls");
for(int i=0;i<=11;i++)
{
puts(a[i]);
}
int x,y;
x=5,y=4;
while(1)
{
char z;
z=getch();
if(z=='r')
goto c;
if(z=='w')
{
if(a[x-1][y]!='#')
{
if(a[x-2][y]!='#'&&a[x-1][y]=='O'&&a[x-2][y]!='O'&&a[x-2][y]!='@')
{
a[x][y]=' ';
x--;
a[x][y]='H';
a[x-1][y]='O';
}
else if(a[x-2][y]!='#'&&a[x-1][y]=='@'&&a[x-2][y]!='O'&&a[x-2][y]!='@'&&a[x-2][y]!=' ')
{
a[x][y]=' ';
x--;
a[x][y]='H';
a[x-1][y]='@';
}
else if(a[x-2][y]!='#'&&a[x-1][y]=='@'&&a[x-2][y]!='O'&&a[x-2][y]!='@'&&a[x-2][y]==' ')
{
a[x][y]=' ';
x--;
a[x][y]='H';
a[x-1][y]='O';
}
else if(a[x-1][y]!='O'&&a[x-1][y]!='@')
{
a[x][y]=' ';
x--;
a[x][y]='H';
}
}
}
if(z=='a')
{
if(a[x][y-1]!='#')
{
if(a[x][y-2]!='#'&&a[x][y-1]=='O'&&a[x][y-2]!='O'&&a[x][y-2]!='@')
{
a[x][y]=' ';
y--;
a[x][y]='H';
a[x][y-1]='O';
}
else if(a[x][y-2]!='#'&&a[x][y-1]=='@'&&a[x][y-2]!='O'&&a[x][y-2]!='@'&&a[x][y-2]!=' ')
{
a[x][y]=' ';
y--;
a[x][y]='H';
a[x][y-1]='@';
}
else if(a[x][y-2]!='#'&&a[x][y-1]=='@'&&a[x][y-2]!='O'&&a[x][y-2]!='@'&&a[x][y-2]==' ')
{
a[x][y]=' ';
y--;
a[x][y]='H';
a[x][y-1]='O';
}
else if(a[x][y-1]!='O'&&a[x][y-1]!='@')
{
a[x][y]=' ';
y--;
a[x][y]='H';
}
}
}
if(z=='d')
{
if(a[x][y+1]!='#')
{
if(a[x][y+2]!='#'&&a[x][y+1]=='O'&&a[x][y+2]!='O'&&a[x][y+2]!='@')
{
a[x][y]=' ';
y++;
a[x][y]='H';
a[x][y+1]='O';
}
else if(a[x][y+2]!='#'&&a[x][y+1]=='@'&&a[x][y+2]!='@'&&a[x][y+2]!='O'&&a[x][y+2]!=' ')
{
a[x][y]=' ';
y++;
a[x][y]='H';
a[x][y+1]='@';
}
else if(a[x][y+2]!='#'&&a[x][y+1]=='@'&&a[x][y+2]!='@'&&a[x][y+2]!='O'&&a[x][y+2]==' ')
{
a[x][y]=' ';
y++;
a[x][y]='H';
a[x][y+1]='O';
}
else if(a[x][y+1]!='O'&&a[x][y+1]!='@')
{
a[x][y]=' ';
y++;
a[x][y]='H';
}
}
}
if(z=='s')
{
if(a[x+1][y]!='#')
{
if(a[x+2][y]!='#'&&a[x+1][y]=='O'&&a[x+2][y]!='O'&&a[x+2][y]!='@')
{
a[x][y]=' ';
x++;
a[x][y]='H';
a[x+1][y]='O';
}
else if(a[x+2][y]!='#'&&a[x+1][y]=='@'&&a[x+2][y]!='O'&&a[x+2][y]!='@'&&a[x+2][y]!=' ')
{
a[x][y]=' ';
x++;
a[x][y]='H';
a[x+1][y]='@';
}
else if(a[x+2][y]!='#'&&a[x+1][y]=='@'&&a[x+2][y]!='O'&&a[x+2][y]!='@'&&a[x+2][y]==' ')
{
a[x][y]=' ';
x++;
a[x][y]='H';
a[x+1][y]='O';
}
else if(a[x+1][y]!='O'&&a[x+1][y]!='@')
{
a[x][y]=' ';
x++;
a[x][y]='H';
}
}
}
check3(a);
if(a[6][4]=='@'&&a[6][5]=='@'&&a[7][4]=='@'&&a[7][5]=='@')
break;
system("cls");
for(int i=0;i<=11;i++)
{
puts(a[i]);
}
}
system("cls");
cout<<"you win!";
Sleep(3000);
}
void forth()
{
d:
system("color 4");
char a[20][20]={" ",
" ",
" #### ",
" ## # ",
" #HO # ",
" ##O ## ",
" ## O # ",
" #*O # ",
" #**@*# ",
" ###### ",
" ",};
system("cls");
for(int i=0;i<=11;i++)
{
puts(a[i]);
}
int x,y;
x=4,y=3;
while(1)
{
char z;
z=getch();
if(z=='r')
goto d;
if(z=='w')
{
if(a[x-1][y]!='#')
{
if(a[x-2][y]!='#'&&a[x-1][y]=='O'&&a[x-2][y]!='O'&&a[x-2][y]!='@')
{
a[x][y]=' ';
x--;
a[x][y]='H';
a[x-1][y]='O';
}
else if(a[x-2][y]!='#'&&a[x-1][y]=='@'&&a[x-2][y]!='O'&&a[x-2][y]!='@'&&a[x-2][y]!=' ')
{
a[x][y]=' ';
x--;
a[x][y]='H';
a[x-1][y]='@';
}
else if(a[x-2][y]!='#'&&a[x-1][y]=='@'&&a[x-2][y]!='O'&&a[x-2][y]!='@'&&a[x-2][y]==' ')
{
a[x][y]=' ';
x--;
a[x][y]='H';
a[x-1][y]='O';
}
else if(a[x-1][y]!='O'&&a[x-1][y]!='@')
{
a[x][y]=' ';
x--;
a[x][y]='H';
}
}
}
if(z=='a')
{
if(a[x][y-1]!='#')
{
if(a[x][y-2]!='#'&&a[x][y-1]=='O'&&a[x][y-2]!='O'&&a[x][y-2]!='@')
{
a[x][y]=' ';
y--;
a[x][y]='H';
a[x][y-1]='O';
}
else if(a[x][y-2]!='#'&&a[x][y-1]=='@'&&a[x][y-2]!='O'&&a[x][y-2]!='@'&&a[x][y-2]!=' ')
{
a[x][y]=' ';
y--;
a[x][y]='H';
a[x][y-1]='@';
}
else if(a[x][y-2]!='#'&&a[x][y-1]=='@'&&a[x][y-2]!='O'&&a[x][y-2]!='@'&&a[x][y-2]==' ')
{
a[x][y]=' ';
y--;
a[x][y]='H';
a[x][y-1]='O';
}
else if(a[x][y-1]!='O'&&a[x][y-1]!='@')
{
a[x][y]=' ';
y--;
a[x][y]='H';
}
}
}
if(z=='d')
{
if(a[x][y+1]!='#')
{
if(a[x][y+2]!='#'&&a[x][y+1]=='O'&&a[x][y+2]!='O'&&a[x][y+2]!='@')
{
a[x][y]=' ';
y++;
a[x][y]='H';
a[x][y+1]='O';
}
else if(a[x][y+2]!='#'&&a[x][y+1]=='@'&&a[x][y+2]!='@'&&a[x][y+2]!='O'&&a[x][y+2]!=' ')
{
a[x][y]=' ';
y++;
a[x][y]='H';
a[x][y+1]='@';
}
else if(a[x][y+2]!='#'&&a[x][y+1]=='@'&&a[x][y+2]!='@'&&a[x][y+2]!='O'&&a[x][y+2]==' ')
{
a[x][y]=' ';
y++;
a[x][y]='H';
a[x][y+1]='O';
}
else if(a[x][y+1]!='O'&&a[x][y+1]!='@')
{
a[x][y]=' ';
y++;
a[x][y]='H';
}
}
}
if(z=='s')
{
if(a[x+1][y]!='#')
{
if(a[x+2][y]!='#'&&a[x+1][y]=='O'&&a[x+2][y]!='O'&&a[x+2][y]!='@')
{
a[x][y]=' ';
x++;
a[x][y]='H';
a[x+1][y]='O';
}
else if(a[x+2][y]!='#'&&a[x+1][y]=='@'&&a[x+2][y]!='O'&&a[x+2][y]!='@'&&a[x+2][y]!=' ')
{
a[x][y]=' ';
x++;
a[x][y]='H';
a[x+1][y]='@';
}
else if(a[x+2][y]!='#'&&a[x+1][y]=='@'&&a[x+2][y]!='O'&&a[x+2][y]!='@'&&a[x+2][y]==' ')
{
a[x][y]=' ';
x++;
a[x][y]='H';
a[x+1][y]='O';
}
else if(a[x+1][y]!='O'&&a[x+1][y]!='@')
{
a[x][y]=' ';
x++;
a[x][y]='H';
}
}
}
check4(a);
if(a[7][3]=='@'&&a[8][3]=='@'&&a[8][4]=='@'&&a[8][5]=='@'&&a[8][6]=='@')
break;
system("cls");
for(int i=0;i<=11;i++)
{
puts(a[i]);
}
}
system("cls");
system("color 0f");
cout<<"you win!";
Sleep(3000);
}
int main()
{
cout<<"\n\n\n\n\n ******************************************\n\n"
<<" 歡迎來到推箱子\n\n"
<<" 游戲說明:\n"
<<" 請用小寫輸入法操作,wasd為上下左右移動\n"
<<" 游戲中H為你,O,@為可推動的箱子,\n 將箱子全部推動到*處即獲勝\n"
<<" 作者:敲代碼的貓\n"
<<" 按任意鍵繼續\n\n"
<<" ******************************************\n";
getch();
system("cls");
first();
system("cls");v
second();
system("cls");
third();
system("cls");
forth();
return 0;
}



去試一試吧!
2021.2.2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255971.html
標籤:其他
