boardelement.cpp
来自「Siemens 的SIMpad是一个多媒体设备」· C++ 代码 · 共 221 行
CPP
221 行
////////////////////////////////////////////////////////////////////////////////// File : BoardElement.h// Class : BoardElement// Description : This class handels a singel boardfield. // Functioms like drawing, event// Author : Juergen P. Messerer, juergen.messerer@freesurf.ch// Project : Fl-Reversi// Release Date : 12th March 2003// Revised on :// License : Gnu Public License (GPL)//// Copyright(c) Juergen P. Messerer 2003./////////////////////////////////////////////////////////////////////////////////#include <FL/forms.H>#include <unistd.h>#include "Board.h"#include "BoardElement.h"#include "images/chip_0.xpm"#include "images/chip_1.xpm"#include "images/chip_2.xpm"#include "images/chip_3.xpm"#include "images/chip_4.xpm"#include "images/chip_5.xpm"#include "images/chip_6.xpm"#include "images/chip_7.xpm"#include "images/chip_8.xpm"#include "images/chip_9.xpm"#include "images/chip_10.xpm"#include "images/chip_11.xpm"#include "images/chip_12.xpm"#include "images/chip_13.xpm"#include "images/chip_14.xpm"#include "images/chip_15.xpm"#include "images/chip_16.xpm"#include "images/chip_17.xpm"#include "images/chip_18.xpm"#include "images/chip_19.xpm"#include "images/chip_20.xpm"#include "images/chip_21.xpm"#include "images/chip_22.xpm"#include "images/chip_23.xpm"#include "images/chip_24.xpm"#define BOXSIZE 34#define BORDER 2#define BOARDSIZE (8*BOXSIZE+BORDER)#define BMOFFSET 5Fl_Pixmap *p_Chip[3];Board *p_parent;BoardElement::BoardElement(int x, int y, int w, int h, int id, int fill, Board *board) : Fl_Widget(x,y,w,h){ m_coordX = x; m_coordY = y; m_id = id; m_fill = fill; p_Chip[0] = new Fl_Pixmap( chip_0_xpm ); p_Chip[1] = new Fl_Pixmap( chip_1_xpm ); p_Chip[2] = new Fl_Pixmap( chip_24_xpm ); icon[0] = new Animated_Icon(250, 0, 28, 29); icon[0]->setRunOnce( TRUE ); icon[0]->hide(); icon[1] = new Animated_Icon(0, 0, 28, 29); icon[1]->setRunOnce( TRUE ); icon[1]->hide(); make_pixmaps(); p_parent = board; }//-----------------------------------------------------------------------------void BoardElement::make_pixmaps() { icon[0]->add(new Fl_Pixmap( chip_7_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_8_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_9_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_10_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_11_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_12_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_13_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_14_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_15_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_16_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_17_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_18_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_19_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_20_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_21_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_22_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_23_xpm ), .05); icon[0]->add(new Fl_Pixmap( chip_24_xpm ), .05); icon[0]->set(0); icon[1]->add(new Fl_Pixmap( chip_18_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_17_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_16_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_15_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_14_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_13_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_12_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_11_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_10_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_9_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_8_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_7_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_6_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_5_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_4_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_3_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_2_xpm ), .05); icon[1]->add(new Fl_Pixmap( chip_1_xpm ), .05); icon[1]->set(0);}//----------------------------------------------------------------------------void BoardElement::draw(){ fl_color( FL_DARK3 ); fl_rectf( m_coordX, m_coordY, w(), BORDER); fl_rectf( m_coordX, m_coordY, BORDER, h()); fl_rectf( m_coordX, m_coordY+BOXSIZE, w(), BORDER); fl_rectf( m_coordX+BOXSIZE, m_coordY, BORDER, h()); if( m_fill ) { fl_color((Fl_Color)12 /*107*/); fl_rectf(m_coordX+BORDER, m_coordY+BORDER, BOXSIZE-BORDER, BOXSIZE-BORDER); } switch(m_state) { case EMPTY: p_Chip[0]->draw( m_coordX+6, m_coordY+6 ); break; case BLUE: p_Chip[1]->draw( m_coordX+6, m_coordY+6 ); /* icon[1]->position( m_coordX+6, m_coordY+6 ); icon[1]->show(); icon[1]->start();*/ break; case RED: p_Chip[2]->draw( m_coordX+6, m_coordY+6 ); /* icon[0]->position( m_coordX+6, m_coordY+6 ); icon[0]->show(); icon[0]->start();*/ break; default: p_Chip[0]->draw( m_coordX+6, m_coordY+6 ); break; }}//----------------------------------------------------------------------------int BoardElement::handle(int e){ switch(e) { case FL_PUSH: { m_count = 0; switch(m_state) { case EMPTY: m_state = BLUE; break; case BLUE: m_state = RED; break; case RED: m_state = EMPTY; break; default: m_state = EMPTY; break; } p_parent->fieldClicked(m_id); } return 1; break; default: return 0; break; }}//----------------------------------------------------------------------------void BoardElement::setState(int state){ m_state = state;}//----------------------------------------------------------------------------void BoardElement::setId(int id){ m_id = id;}//----------------------------------------------------------------------------int BoardElement::state(void){ return m_state;}//----------------------------------------------------------------------------int BoardElement::id(void){ return m_id;}//----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?