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 + -
显示快捷键?