1. 程式人生 > >在DOS命令列視窗中顯示出用各種字元拼湊出來的各種圖案的實現方法,如本人頭像

在DOS命令列視窗中顯示出用各種字元拼湊出來的各種圖案的實現方法,如本人頭像

注:文中例子是本人剛學C++程式語言的時候製作的,實現方法很簡單,主要使用for迴圈語句,無需什麼複雜燒腦的演算法。

由於經常看到各種符號拼成的圖案,感覺很有意思,所以自己也弄了個,純屬好玩。

   (作品---->原圖)  

思   路:

>>實現這個圖案的關鍵之處在於構造圖案中的各個符號的定位

第一步:首先需要注意一下,在DOS命令列視窗中,預設情況下,每行之間的字元間距大概是每一行行內字元間間距的2倍(視覺上)

如果你的圖案是一個正方形,設圖案每一行有X個字元(包含空格),則行數為X/2行。


第二步:按照這個視覺比例,用word文件建立如下內容(如下圖,本文中每一行都是一個個星號組成的),並打印出來。

然後按照設計的圖案的每行中的字元個數,在打印出來的紙中用鉛筆畫出一個邊框(範圍),然後可以在邊框範圍內盡情的連線,

最後拼成圖案。(這一步解決圖案中符號定位的問題,屬於笨辦法,但是十分有效,而且很直觀,本例選擇的行字元數為40。)


第三步:按行計算邊框範圍內連起來的線經過的點(每個點到該行行首的距離),經過則用自定義的符號顯示,沒有經過的點用空格顯示。

可以在上圖中標上刻度,方便計算每個符號的位置。

第四步:為了方便在命令列視窗中左右移動圖案,給每一行行首都增加了一個int型變數,並根據該變數的值在每行行首新增空格,

使得圖案的左邊框離視窗的左邊界之間的距離可以隨意改變。該步驟可以省略。

第五步:本例實現程式碼如下(出現圖案雛形後在根據視覺上的差異對部分字元位置進行微調)

#include<iostream>
using namespace std;
int main(){
    int a;
	cout<<"please input A:";  
	cin>>a;                  //圖案左邊框離視窗左邊界的距離值,可替換成任意常量,也可以忽略。
	for(int x=0;x<30;x++){
	for(int y=0;y<60+a;y++){
		if(x==0||x==29){if(y<a)cout<<" ";else cout<<"*";}
		else if(x==1){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else cout<<" ";}
		else if(x==2){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+9||y==a+50)cout<<"*";
							else if(y==a+22||y==a+24||y==a+26||y==a+28||y==a+30||y==a+32||y==a+34||
							y==a+36||y==a+38)cout<<"*"; else cout<<" ";}
		else if(x==3){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==8+a||y==10+a)cout<<"*";
							else if(y==12+a||y==18+a||y==a+42||y==a+47||y==a+49||y==a+51)cout<<"*"; else cout<<" ";}
		else if(x==4){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+8||y==a+11||y==a+15||y==a+45
							||y==a+48||y==a+51)cout<<"*";else cout<<" ";}
		else if(x==5){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+8||y==a+13||y==a+47||y==a+51)
							cout<<"*";else cout<<" ";}
		else if(x==6){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+8||y==a+51)
							cout<<"*";else cout<<" ";}
		else if(x==7){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+6
							||y==a+53)cout<<"*";else cout<<" ";}
		else if(x==8){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+5
							||y==a+54)cout<<"*";else cout<<" ";}
		else if(x==9){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+4
							||y==a+55)cout<<"*";else cout<<" ";}
		else if(x==10){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+3
							||y==a+56)cout<<"*";
                      else if(y>=a+9&&y!=a+10&&y!=a+12&&y!=a+14&&y!=a+16&&y!=a+18&&y!=a+20&&y!=a+22&&y!=a+24&&y!=a+26&&y<=a+27)cout<<"*";
                      else if(y>=a+32&&y!=a+33&&y!=a+35&&y!=a+37&&y!=a+39&&y!=a+41&&y!=a+43&&y!=a+45&&y!=a+47&&y!=a+49&&y<=a+50)cout<<"*";else cout<<" ";}
		else if(x==11){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2
							||y==a+57)cout<<"*";else if(y==a+10||y==a+49||y==a+26||y==a+33)
							cout<<"*";else if(y>=a+14&&y<=a+17)cout<<"*";else if(y>=a+42&&
							y<=a+45)cout<<"*";else cout<<" ";}
		else if(x==12){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2
							||y==a+57)cout<<"*";else if(y==a+12||y==a+24||y==a+35||y==a+47)
							cout<<"*";else cout<<" ";}
		else if(x==13){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2
							||y==a+57)cout<<"*";else if(y>=a+14&&y!=a+15&&y!=a+17&&y!=a+19&&y<=a+20)cout<<"*";else if
							(y>=a+39&&y!=a+40&&y!=a+42&&y!=a+44&&y<=a+45)cout<<"*";else cout<<" ";}
		else if(x==14){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2
							||y==a+57)cout<<"*";else cout<<" ";}
		else if(x==15){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2
							||y==a+57)cout<<"*";else if(y==a+8||y==50+a) cout<<"*";else cout<<" ";}
		else if(x==16){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2
							||y==a+57)cout<<"*";else if(y==a+8||y==50+a) cout<<"*";else cout<<" ";}
		else if(x==17){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2
							||y==a+57)cout<<"*";else if(y==a+8||y==50+a) cout<<"*";else cout<<" ";}
		else if(x==18){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2
							||y==a+57)cout<<"*";else if(y==a+9||y==49+a) cout<<"*";else cout<<" ";}
		else if(x==19){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2
							||y==a+57)cout<<"*";else if(y==a+10||y==48+a) cout<<"*";else cout<<" ";}
		else if(x==20){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+3
							||y==a+56)cout<<"*";else if(y==a+11||y==47+a) cout<<"*";else cout<<" ";}
		else if(x==21){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+4
							||y==a+55)cout<<"*";else if(y==a+13||y==45+a) cout<<"*";else cout<<" ";}
		else if(x==22){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+5
							||y==a+54)cout<<"*";else if(y==a+15||y==43+a) cout<<"*";else cout<<" ";}
		else if(x==23){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+7
							||y==a+52)cout<<"*";else if(y==a+17||y==41+a) cout<<"*";else cout<<" ";}
		else if(x==24){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+10
							||y==a+49)cout<<"*";else if(y==a+21||y==a+25||y==a+29||y==a+33||y==a+37)cout<<"*";else cout<<" ";}
		else if(x==25){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+13
							||y==a+46)cout<<"*";else cout<<" ";}
		else if(x==26){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if
							(y>=a+17&&y!=a+18&&y!=a+20&&y!=a+22&&y!=a+24&&y!=a+26&&
							y!=a+28&&y!=a+29&&y!=a+31&&y!=a+33&&y!=a+35&&y!=a+37&&
							y!=a+39&&y!=a+41&&y<=42+a)cout<<"*";else cout<<" ";}
		else if(x==27){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+16
							||y==a+25||y==a+29||y==a+30||y==a+31||y==a+35||y==a+43)cout<<"*";else cout<<" ";}
		else if(x==28){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+15
							||y==a+26||y==a+27||y==a+33||y==a+34||y==a+44)cout<<"*";else cout<<" ";}

		}
		cout<<endl;
	}
	cout<<endl;
	cout<<endl;
system("pause");
return 0;
}
have fun!