Update gtk128
This commit is contained in:
parent
e4c94bb4ee
commit
774c8c26b7
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
|
||||
}
|
|
@ -8,16 +8,18 @@ static double randnum(int begin = 0, int end = 1)
|
|||
}
|
||||
|
||||
// The Game Class
|
||||
void Game24::startgame(string user_result)
|
||||
bool Game24::startgame(string user_result)
|
||||
{
|
||||
bool winned = false;
|
||||
|
||||
// Format result number
|
||||
if (user_result[user_result.length()] != ')' || user_result[0] != '(')
|
||||
if (user_result[user_result.length()-1] != ')' || user_result[0] != '(')
|
||||
{
|
||||
user_result = '(' + user_result + ')';
|
||||
}
|
||||
|
||||
std::cout<<user_result<<std::endl;
|
||||
|
||||
// Check user input and the results
|
||||
for (std::vector<string>::iterator it = result_strings.begin(); it != result_strings.end(); it++)
|
||||
{
|
||||
|
@ -38,6 +40,8 @@ void Game24::startgame(string user_result)
|
|||
{
|
||||
std::cout << "Lost" << std::endl;
|
||||
}
|
||||
|
||||
return winned;
|
||||
}
|
||||
|
||||
void Game24::getnumbers()
|
||||
|
|
|
@ -10,7 +10,7 @@ typedef std::string string;
|
|||
class Game24
|
||||
{
|
||||
public:
|
||||
void startgame(string user_result);
|
||||
bool startgame(string user_result);
|
||||
void getnumbers();
|
||||
char numbers_char[20];
|
||||
|
||||
|
|
|
@ -2,63 +2,104 @@
|
|||
|
||||
MyWin::MyWin(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade)
|
||||
: Gtk::Window(cobject),
|
||||
ref_builder(ref_Glade)
|
||||
ref_builder(ref_Glade),
|
||||
winned(true)
|
||||
{
|
||||
// Get Widgets
|
||||
ref_builder->get_widget("label_numbers",label_numbers);
|
||||
ref_builder->get_widget("entry_ans",entry_ans);
|
||||
ref_builder->get_widget("btnstart",btnstart);
|
||||
ref_builder->get_widget("btncheck",btncheck);
|
||||
ref_builder->get_widget("btnexit",btnexit);
|
||||
ref_builder->get_widget("btn0",btns[0]);
|
||||
ref_builder->get_widget("btn1",btns[1]);
|
||||
ref_builder->get_widget("btn2",btns[2]);
|
||||
ref_builder->get_widget("btn3",btns[3]);
|
||||
ref_builder->get_widget("btn4",btns[4]);
|
||||
ref_builder->get_widget("btn5",btns[5]);
|
||||
ref_builder->get_widget("btn6",btns[6]);
|
||||
ref_builder->get_widget("btn7",btns[7]);
|
||||
ref_builder->get_widget("btn8",btns[8]);
|
||||
ref_builder->get_widget("btn9",btns[9]);
|
||||
ref_builder->get_widget("btnadd",btns[10]);
|
||||
ref_builder->get_widget("btnsubb",btns[11]);
|
||||
ref_builder->get_widget("btnmul",btns[12]);
|
||||
ref_builder->get_widget("btndiv",btns[13]);
|
||||
ref_builder->get_widget("btnleft",btns[14]);
|
||||
ref_builder->get_widget("btnright",btns[15]);
|
||||
ref_builder->get_widget("label_numbers", label_numbers);
|
||||
ref_builder->get_widget("entry_ans", entry_ans);
|
||||
ref_builder->get_widget("btnstart", btnstart);
|
||||
ref_builder->get_widget("btncheck", btncheck);
|
||||
ref_builder->get_widget("btnexit", btnexit);
|
||||
ref_builder->get_widget("btn0", btns[0]);
|
||||
ref_builder->get_widget("btn1", btns[1]);
|
||||
ref_builder->get_widget("btn2", btns[2]);
|
||||
ref_builder->get_widget("btn3", btns[3]);
|
||||
ref_builder->get_widget("btn4", btns[4]);
|
||||
ref_builder->get_widget("btn5", btns[5]);
|
||||
ref_builder->get_widget("btn6", btns[6]);
|
||||
ref_builder->get_widget("btn7", btns[7]);
|
||||
ref_builder->get_widget("btn8", btns[8]);
|
||||
ref_builder->get_widget("btn9", btns[9]);
|
||||
ref_builder->get_widget("btnadd", btns[10]);
|
||||
ref_builder->get_widget("btnsubb", btns[11]);
|
||||
ref_builder->get_widget("btnmul", btns[12]);
|
||||
ref_builder->get_widget("btndiv", btns[13]);
|
||||
ref_builder->get_widget("btnleft", btns[14]);
|
||||
ref_builder->get_widget("btnright", btns[15]);
|
||||
|
||||
// Link Signals
|
||||
btnstart->signal_clicked().connect(sigc::mem_fun(*this,&MyWin::btnstart_clicked));
|
||||
btnexit->signal_clicked().connect(sigc::mem_fun(*this,&MyWin::hide));
|
||||
btncheck->signal_clicked().connect(sigc::mem_fun(*this,&MyWin::btncheck_clicked));
|
||||
for(int i = 0 ; i < 16;i++){
|
||||
btns[i]->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this,&MyWin::btns_clicked),btns[i]));
|
||||
btnstart->signal_clicked().connect(sigc::mem_fun(*this, &MyWin::btnstart_clicked));
|
||||
btnexit->signal_clicked().connect(sigc::mem_fun(*this, &MyWin::hide));
|
||||
btncheck->signal_clicked().connect(sigc::mem_fun(*this, &MyWin::btncheck_clicked));
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
btns[i]->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &MyWin::btns_clicked), btns[i]));
|
||||
}
|
||||
entry_ans->signal_grab_focus().connect(sigc::mem_fun(*this, &MyWin::entry_ans_focus));
|
||||
}
|
||||
|
||||
void MyWin::btns_clicked(Gtk::Button *button)
|
||||
{
|
||||
// Get Original text and add number from button
|
||||
|
||||
// 1.Get text buffer for insert
|
||||
auto buffer = entry_ans->get_buffer();
|
||||
|
||||
// 2.Get text to insert
|
||||
Glib::ustring label = button->get_label();
|
||||
|
||||
if (focused)
|
||||
{
|
||||
pos = entry_ans->get_position();
|
||||
}
|
||||
|
||||
// 3.Get Position
|
||||
buffer->insert_text(pos, label);
|
||||
pos++;
|
||||
focused = false;
|
||||
}
|
||||
|
||||
void MyWin::entry_ans_focus()
|
||||
{
|
||||
focused = true;
|
||||
}
|
||||
|
||||
void MyWin::btnstart_clicked()
|
||||
{
|
||||
// Start Game
|
||||
if (winned)
|
||||
{
|
||||
main_game.getnumbers();
|
||||
label_numbers->set_label(main_game.numbers_char);
|
||||
}
|
||||
else
|
||||
{
|
||||
label_numbers->set_label(tmp);
|
||||
}
|
||||
}
|
||||
|
||||
void MyWin::btns_clicked(Gtk::Button *button){
|
||||
// Get Original text and add number from button
|
||||
Glib::ustring text = entry_ans->get_text();
|
||||
Glib::ustring label = button->get_label();
|
||||
entry_ans->set_text(text+label);
|
||||
}
|
||||
|
||||
void MyWin::btnstart_clicked(){
|
||||
// Start Game
|
||||
main_game.getnumbers();
|
||||
label_numbers->set_label(main_game.numbers_char);
|
||||
}
|
||||
|
||||
void MyWin::btncheck_clicked(){
|
||||
void MyWin::btncheck_clicked()
|
||||
{
|
||||
// Check Answer
|
||||
Glib::ustring answer = entry_ans->get_text();
|
||||
tmp = label_numbers->get_label();
|
||||
if (main_game.startgame(std::string(answer.c_str())))
|
||||
{
|
||||
label_numbers->set_label("You Winned!");
|
||||
}
|
||||
else
|
||||
{
|
||||
label_numbers->set_label("You Lost!");
|
||||
}
|
||||
}
|
||||
|
||||
MyWin *MyWin::create()
|
||||
{
|
||||
// Create a new window
|
||||
MyWin * window = nullptr;
|
||||
MyWin *window = nullptr;
|
||||
auto builder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/window.ui");
|
||||
builder->get_widget_derived("window",window);
|
||||
builder->get_widget_derived("window", window);
|
||||
|
||||
return window;
|
||||
}
|
|
@ -15,6 +15,9 @@ private:
|
|||
|
||||
// 24-Game Class
|
||||
Game24 main_game;
|
||||
int pos;
|
||||
bool focused,winned;
|
||||
Glib::ustring tmp;
|
||||
|
||||
// Child widgets
|
||||
Gtk::Entry *entry_ans;
|
||||
|
@ -25,4 +28,5 @@ private:
|
|||
void btns_clicked(Gtk::Button * button);
|
||||
void btnstart_clicked();
|
||||
void btncheck_clicked();
|
||||
void entry_ans_focus();
|
||||
};
|
Loading…
Reference in New Issue