提示コードですが描画色を指定してるのですがなぜ画面は灰色になってそのまま文字の描画色が変わらないのでしょうか?文字の色は黄色で背景色は黒のはずです。提示コードのコメント部のコードです。※端末は対応しています。
参考サイトA: https://www.linuxjournal.com/content/programming-color-ncurses
参考サイトB: https://dev.grapecity.co.jp/support/powernews/column/clang/048/page02.htm
cpp
1#include <string.h> 2#include <iostream> 3#include <fstream> 4#include <memory> 5#include "../lib/ncurses/include/curses.h" 6 7#include "../header/Entry.hpp" 8#include "../header/Bit.hpp" 9 10 11 12int main() 13{ 14 15 std::cout<<"\033[?1003h\n"; //マウス座標を有効化 16 initscr(); //初期化 17 noecho(); //入力した文字を非表示 18 cbreak(); //Enterキー不要のキー入力 19 keypad(stdscr,TRUE); // 特殊キーを有効化 20/////////////////////////////////////////////////////////////////////////////////////////////// 21 start_color(); //カラーを有効化 22 mousemask(ALL_MOUSE_EVENTS| REPORT_MOUSE_POSITION,NULL); // マウスイベントを取得 23 24 if(has_colors() == false) 25 { 26 std::cout<<"\033[?1003l\n"; //マウス座標を無効化 27 endwin(); 28 printf("カラーに対応していません。"); 29 getchar(); 30 exit(1); 31 32 33 } 34/////////////////////////////////////////////////////////////////////////////////////////////// 35 36 std::unique_ptr<Entry> entry = std::make_unique<Entry>(); //Entry 37 38 while (true) 39 { 40 entry->Update(); //更新 41 entry->Renderer(); //描画 42 43 if(entry->getChangeScene() == Scene::SceneType::Exit) 44 { 45 break; 46 } 47 } 48 49 50 std::cout<<"\033[?1003l\n"; //マウス座標を無効化 51 endwin(); //終了 52 53 return 0; 54}
cpp
1#include "../header/Edit.hpp" 2#include "../header/Color.hpp" 3#include <stdlib.h> 4#include <iostream> 5#include <memory> 6 7//コンストラクタ 8Edit::Edit(): Scene() 9{ 10 11 mousePosition.x = 0; 12 mousePosition.y = 0; 13 14 int t = 0; 15 for(int i = 0; i < 8; i++) 16 { 17 for(int j = 0; j<8; j++) 18 { 19 //init_pair(t, i, j); 20 t++; 21 } 22 } 23 24///////////////////////////////////////////////////////////////////////////////////////////// 25 init_pair(0, COLOR_YELLOW, COLOR_BLACK); 26///////////////////////////////////////////////////////////////////////////////////////////// 27 28 file.open("log.txt"); 29 changeScene = Scene::SceneType::Edit; 30} 31 32void Edit::KeyInput() 33{ 34 35 int key = getch(); 36 37 //ESCで終了 38 if(key == 27) 39 { 40 changeScene = Scene::SceneType::Exit; 41 file.close(); 42 } 43} 44 45void Edit::MouseInput() 46{ 47 48 //マウスイベント 49 if(getmouse(&event) == OK) 50 { 51 //マウス座標 52 if(event.bstate & REPORT_MOUSE_POSITION) 53 { 54 file << "MOUSE_MOVE" <<(int)Color::BLACK_BLACK<<std::endl; 55 mousePosition.x = event.x; 56 mousePosition.y = event.y; 57 } 58 59 //Left click 60 if(event.bstate & BUTTON1_PRESSED) 61 { 62 file << "LEFT_CLICKED"<<std::endl; 63 } 64 65 //Right click 66 if(event.bstate & BUTTON3_PRESSED) 67 { 68 file << "RIGHT_CLICKED"<<std::endl; 69 } 70 } 71 72 73} 74 75 76//計算 77void Edit::Update() 78{ 79 MouseInput(); 80 KeyInput(); 81} 82 83//描画 84void Edit::Renderer()const 85{ 86 erase(); 87 move(mousePosition.y,mousePosition.x); 88 89// attron(COLOR_PAIR(Color::BLACK_BLACK)); 90 //attroff(COLOR_PAIR(PLAYER_PAIR)); 91//////////////////////////////////////////////////////////////////////////////////////////// 92 attron(0); 93 addstr("AAAA"); 94 mvaddch(0, 0, 'A'); 95 96 attroff(0); 97//////////////////////////////////////////////////////////////////////////////////////////// 98 99 100 101 102 refresh(); 103} 104 105 106//コンストラクタ 107Edit::~Edit() 108{ 109 110}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。