1. 程式人生 > >C++控制檯視窗介面的程式設計(基礎)

C++控制檯視窗介面的程式設計(基礎)

前言

    作為初學者,每一個學習 C、C++的人所面對的都是一個黑黑的視窗,從初識C++,再到一道一道的刷題,到進一步的ACM,這個黑色的視窗都一直陪伴著我們。無聊之餘,自己用C++做了一個控制檯的小介面,希望能讓C++初學者對如何用C++做一個簡單控制檯視窗介面有初步瞭解。

控制檯介面程式設計---->參考網址:點選開啟連結

 

介面

這只是單純的介面,本來是一個小遊戲。(因為遊戲還有很多bug,所以此處沒有分享 :0 )

程式碼附上:

程式碼

 

#include <bits/stdc++.h>//C++萬能頭
#include<windows.h>//控制檯程式設計主要標頭檔案
#include<conio.h>//getch()函式
#include<stdlib.h>//system()函式
using namespace std;
void pos(int x,int y);//確定游標位置
void blue_border();//藍色字型
void white_back();//還原亮白色字型
void cyan_choose();//青色字型
void on_Select();//被選中時的樣式
void onChoose(int x,int y);//確定所選中的位置
void star();//初始化介面
HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);//獲取標準輸出控制代碼
int main()
{
    system("color 7F");//設定控制檯介面背景顏色和前景顏色
    system("mode con cols=100 lines=40");//初始化緩衝區大小
    SetConsoleTitle("StathamJ的程式");//設定控制檯視窗標題
    cyan_choose();
    cout<<"w,a,s,d 控制游標選擇;空格 確定"<<endl;

    blue_border();
    pos(5,5);
    cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>";//上邊框
    pos(5,25);
    cout<<"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<";//下邊框
    for(int i=5,j=6; j<25; j++) //左邊框
    {
        pos(i,j);
        cout<<"*";
    }
    for(int i=85,j=6; j<25; j++) //右邊框
    {
        pos(i,j);
        cout<<"*";
    }

    cyan_choose();
    pos(65,10);
    cout<<"2. 選擇 ";
    pos(25,20);
    cout<<"3. 繼續 ";
    pos(65,20);
    cout<<"4. 退出 ";
    on_Select();
    pos(25,10);
    cout<<"1. 開始 ";

//wsad控制游標對進行自由選擇
    int x=25,y=10;
    char sel;
    sel=getch();
    while(sel!=' ')
    {
        star();
        switch(sel)
        {
        case 'w':
            y=y-10;
            break;
        case 's':
            y=y+10;
            break;
        case 'a':
            x=x-40;
            break;
        case 'd':
            x=x+40;
            break;
        }
//防止超出範圍
        if(x>=65)
        {
            x=65;
        }
        if(y>=20)
        {
            y=20;
        }
        if(x<=25)
        {
            x=25;
        }
        if(y<=10)
        {
            y=10;
        }
        pos(x,y);
        onChoose(x,y);
        sel=getch();
    }
    pos(0,30);
    white_back();//還原預設字型
    CloseHandle(hOut);//關閉標準輸出控制代碼
    return 0;
}
//設定游標位置
void pos(int x,int y)
{
    COORD posPoint = {x,y}; //設定座標
    SetConsoleCursorPosition(hOut,posPoint);
}
void blue_border()
{
    WORD blue=FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED|FOREGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN;//設定字型顏色、背景顏色
    SetConsoleTextAttribute(hOut,blue);//字型樣式
}
void white_back()
{
    WORD white=FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY;
    SetConsoleTextAttribute(hOut,white);
}
void cyan_choose()
{
    WORD cyan=FOREGROUND_GREEN|FOREGROUND_INTENSITY|BACKGROUND_GREEN|BACKGROUND_BLUE;
    SetConsoleTextAttribute(hOut,cyan);
}
void on_Select()
{
    WORD select=FOREGROUND_GREEN|FOREGROUND_INTENSITY|BACKGROUND_RED;
    SetConsoleTextAttribute(hOut,select);
}
void onChoose(int x,int y)
{
    if(x==25&&y==10)
    {
        on_Select();
        cout<<"1. 開始 ";
    }
    else if(x==25&&y==20)
    {
        on_Select();
        cout<<"3. 繼續 ";
    }
    else if(x==65&&y==10)
    {
        on_Select();
        cout<<"2. 選擇 ";
    }
    else if(x==65&&y==20)
    {
        on_Select();
        cout<<"4. 退出 ";
    }
}
void star()
{
    cyan_choose();
    pos(25,10);
    cout<<"1. 開始 ";
    pos(65,10);
    cout<<"2. 選擇 ";
    pos(25,20);
    cout<<"3. 繼續 ";
    pos(65,20);
    cout<<"4. 退出 ";
}