前言
今天我們會寫所有的輸出操作.
輸出
color函數
void color(int a)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
//顔色=背景色*16+字型色
/* 1 深藍色 2 深綠色 3 深青色 4 深紅色
5 深粉色 6 黃色 7 深白色 8 灰色
9 淺藍色 10 淺綠色 11 淺青色 12 淺紅色
13 淺粉色 14 淺黃色 15 淺白色*/
}
棋盤有些複雜
附:_qp_color_(坐标x,坐标y,背景色/棋子色)
void _qp_color_(int i,int j,bool b){
color(b?15:240);
if(b==1 || mp[i][j].dui==-1){
if(mp[i][j].color==1) color(2*16); //深綠
else color(10*16); //淺綠
}
else{
if(mp[i][j].dui==0) color(15*16); //白
else color(15); //黑
}
}
我們首先需要循環每行棋子
for(int j=1;j<=8;j++){
}
棋子第一行:就是棋盤的顔色
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
}
棋子第二行:先棋盤的顔色,再棋子的顔色,最後棋盤的顔色
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
_qp_color_(j,i,0);
cout<<" ";
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
棋子第三行(自己看):
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
_qp_color_(j,i,0);
cout<<" ";
if(mp[j][i].i!=-1){ //是否有棋子
cout<<qi[mp[j][i].i].name;
}
else{
cout<<" ";
}
cout<<" ";
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
棋子第四行:同第二行
棋子第五行:同第一行
完整代碼
void map_out(){
for(int j=1;j<=8;j++){
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
_qp_color_(j,i,0);
cout<<" ";
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
_qp_color_(j,i,0);
cout<<" ";
if(mp[j][i].i!=-1){
cout<<qi[mp[j][i].i].name;
}
else{
cout<<" ";
}
cout<<" ";
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
_qp_color_(j,i,0);
cout<<" ";
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
}
}
效果(綠色):
那麼我們今天就寫到這裡,再見!
完整代碼
#include<string>
#include<windows.h>
#include<iostream>
using namespace std;
struct MAP{
int i;
short dui;
bool color;
}mp[9][9];
struct Qi{
string name;
char id;
short a[8];
}qi[6];
short ma_zoux[8]={1,1,-1,-1,2,2,-2,-2},ma_zouy[8]={2,-2,2,-2,1,-1,1,-1};
void qi_fuzhi(int ii,string _name,char iid,short a1,short a2,short a3,short a4,short a5,short a6 ,short a7,short a8){
qi[ii].name=_name;
qi[ii].id=iid;
qi[ii].a[0]=a1;qi[ii].a[1]=a2;
qi[ii].a[2]=a3;qi[ii].a[3]=a3;
qi[ii].a[4]=a4;qi[ii].a[5]=a5;
qi[ii].a[6]=a7;qi[ii].a[7]=a8;
}
void csh(){
qi_fuzhi(0,"兵",' ',1,0,0,0,-1,-1,0,0); //棋子初始化
qi_fuzhi(1,"車",'R',2,2,2,2,0,0,0,0);
qi_fuzhi(2,"象",'B',0,0,0,0,2,2,2,2);
qi_fuzhi(3,"馬",'N',-2,-2,-2,-2,-2,-2,-2,-2);
qi_fuzhi(4,"後",'Q',2,2,2,2,2,2,2,2);
qi_fuzhi(5,"王",'K',1,1,1,1,1,1,1,1);
bool _color=0;
for(int i=1;i<=8;i++){ //棋盤顔色初始化
for(int j=1;j<=8;j++){
mp[i][j].color=_color;
_color=!_color;
}
_color=!_color;
}
short _mp[9][9]={{-1,-1,-1,-1,-1,-1,-1,-1}, //棋盤棋子初始化
{-1,1,3,2,4,5,2,3,1},
{-1,0,0,0,0,0,0,0,0},
{-1,-1,-1,-1,-1,-1,-1,-1,-1},
{-1,-1,-1,-1,-1,-1,-1,-1,-1},
{-1,-1,-1,-1,-1,-1,-1,-1,-1},
{-1,-1,-1,-1,-1,-1,-1,-1,-1},
{-1,0,0,0,0,0,0,0,0},
{-1,1,3,2,4,5,2,3,1}};
for(int i=1;i<=8;i++){
for(int j=1;j<=8;j++){
mp[i][j].i=_mp[i][j];
}
}
for(int i=1;i<=8;i++){ //隊初始化
for(int j=1;j<=8;j++){
if(i==1||i==2) mp[i][j].dui=1;
else if(i==7||i==8) mp[i][j].dui=0;
else mp[i][j].dui=-1;
}
}
}
void color(int a)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
//顔色=背景色*16+字型色
/* 1 深藍色 2 深綠色 3 深青色 4 深紅色
5 深粉色 6 黃色 7 深白色 8 灰色
9 淺藍色 10 淺綠色 11 淺青色 12 淺紅色
13 淺粉色 14 淺黃色 15 淺白色*/
}
void _qp_color_(int i,int j,bool b){
color(b?15:240);
if(b==1 || mp[i][j].dui==-1){
if(mp[i][j].color==1) color(2*16); //深綠
else color(10*16); //淺綠
}
else{
if(mp[i][j].dui==0) color(15*16); //白
else color(15); //黑
}
}
void map_out(){
for(int j=1;j<=8;j++){
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
_qp_color_(j,i,0);
cout<<" ";
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
_qp_color_(j,i,0);
cout<<" ";
if(mp[j][i].i!=-1){
cout<<qi[mp[j][i].i].name;
}
else{
cout<<" ";
}
cout<<" ";
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
_qp_color_(j,i,0);
cout<<" ";
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
for(int i=1;i<=8;i++){
_qp_color_(j,i,1);
cout<<" ";
}
cout<<endl;
}
}
int main(){
csh();
map_out();
return 0;
}