Ignore:
Timestamp:
04/04/03 16:22:06 (21 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mtools/MagicReversi.cc

    r1880 r1907  
    3333//   MagicReversi reversi;
    3434//
     35//  Rules:
     36//  ------
     37//
     38// Use the mouse to put a stone at some place. If between your newly
     39// placed stone and the next stone (in a row) of your color are stones
     40// of other colors this stones are won by you. You can only place a
     41// stone if you win at least one stone from your 'enemy'. If you
     42// cannot do so, you are skipped. If nobody can make a move anymore
     43// the game is over. The player has won who has the most stones in
     44// his own color.
     45// The present player is indicated by <*>
     46// Use the Escape key to abort a game.
     47// If the game was aborted or has been stopped youcan access the
     48// options in the context menu.
     49//
    3550////////////////////////////////////////////////////////////////////////////
    3651#include "MagicReversi.h"
    3752
    3853#include <iostream.h>
     54
     55#include <KeySymbols.h>
    3956
    4057#include <TText.h>
     
    168185    : fGeomCam(NULL), fDone(NULL), fW(0), fH(0), fDrawingPad(NULL), fIsAllocated(kFALSE)
    169186{
    170     SetNewCamera(new MGeomCamCT1);
     187    SetNewCamera(new MGeomCamMagic);
    171188
    172189    //
     
    177194    SetBit(kCanDelete);
    178195    gInterpreter->DeleteGlobal(this);
     196
     197    fNumUsers = 2;
    179198
    180199    Draw();
     
    317336void MagicReversi::Update()
    318337{
    319     for (int i=0; i<fNumUsers; i++)
     338    int i;
     339    for (i=0; i<fNumUsers; i++)
    320340    {
    321341        TString txt = "Pixels: ";
     
    327347        fUsrTxt[i]->SetText(-fRange*0.95, fRange-(i+1)*fRange*0.06, txt);
    328348    }
     349    for (; i<6; i++)
     350        fUsrTxt[i]->SetText(0, 0, "");
     351}
     352
     353void MagicReversi::TwoPlayer()
     354{
     355    fNumUsers = 2;
     356    Reset();
     357}
     358
     359void MagicReversi::ThreePlayer()
     360{
     361    fNumUsers = 3;
     362    Reset();
     363}
     364
     365void MagicReversi::FourPlayer()
     366{
     367    fNumUsers = 4;
     368    Reset();
     369}
     370
     371void MagicReversi::FivePlayer()
     372{
     373    fNumUsers = 5;
     374    Reset();
     375}
     376
     377void MagicReversi::SixPlayer()
     378{
     379    fNumUsers = 6;
     380    Reset();
    329381}
    330382
     
    352404    }
    353405
    354     fNumUsers = 2; // not more than 6!
    355406    fNumUser  = 0;
    356407
     
    387438
    388439    TString txt = "Player #";
    389     txt += winner;
     440    txt += winner+1;
    390441    txt += " wins (";
    391442    txt += max;
     
    523574        return;
    524575
     576    if (event==kKeyPress && py==kKey_Escape)
     577    {
     578        Done();
     579        fDrawingPad->Modified();
     580        fDrawingPad->Update();
     581        return;
     582    }
     583
    525584    UInt_t idx;
    526585    for (idx=0; idx<fNumPixels; idx++)
     
    547606        while (!CheckMoves())
    548607        {
    549             cout << "Sorry, no moves possible!" << endl;
     608            cout << "Sorry, no moves possible for player #" << fNumUser << endl;
    550609            fNumUser++;
    551610            fNumUser%=fNumUsers;
    552611
    553612            if (fNumUser==start)
     613            {
    554614                Done();
     615                break;
     616            }
    555617        }
    556618
     
    559621
    560622    fDrawingPad->Modified();
    561 
    562     /*
    563     if (event==kKeyPress && py==0x1000)
    564     {
    565         Reset();
    566         return;
    567     }
    568     */
    569     /*
    570     UInt_t idx;
    571     for (idx=0; idx<fNumPixels; idx++)
    572         if ((*fPixels)[idx]->DistancetoPrimitive(px, py)==0)
    573             break;
    574 
    575     if (idx==fNumPixels)
    576         return;
    577 
    578     MGeomPix &pix=(*fGeomCam)[idx];
    579 
    580     if (event==kButton1Double)
    581     {
    582         OpenHexagon(idx);
    583 
    584         if (pix.TestBit(kHasBomb))
    585             Done("Argh... you hit the Bomb!!!", kRed);
    586     }
    587 
    588     if (event==kButton1Down && !pix.TestBit(kIsVisible))
    589     {
    590         if (pix.TestBit(kHasFlag))
    591             Remove(GetFlag(idx));
    592         else
    593             GetFlag(idx)->Draw();
    594 
    595         pix.InvertBit(kHasFlag);
    596     }
    597 
    598     UInt_t vis=fNumBombs;
    599     UInt_t flg=fNumBombs;
    600     for (UInt_t i=0; i<fNumPixels; i++)
    601     {
    602         if ((*fGeomCam)[i].TestBit(kIsVisible))
    603             vis++;
    604         if ((*fGeomCam)[i].TestBit(kHasFlag))
    605             flg--;
    606     }
    607 
    608     Update(flg);
    609 
    610     if (vis==fNumPixels && !fDone)
    611         Done("Great! Congratulations, you did it!", kGreen);
    612 
    613     fDrawingPad->Modified();
    614       */
    615     /*
    616      switch (event)
    617      {
    618      case kNoEvent:       cout << "No Event" << endl; break;
    619      case kButton1Down:   cout << "Button 1 down" << endl; break;
    620      case kButton2Down:   cout << "Button 2 down" << endl; break;
    621      case kButton3Down:   cout << "Button 3 down" << endl; break;
    622      case kKeyDown:       cout << "Key down" << endl; break;
    623      case kKeyUp:         cout << "Key up" << endl; break;
    624      case kKeyPress:      cout << "Key press" << endl; break;
    625      case kButton1Locate: cout << "Button 1 locate" << endl; break;
    626      case kButton2Locate: cout << "Button 2 locate" << endl; break;
    627      case kButton3Locate: cout << "Button 3 locate" << endl; break;
    628     }
    629     */
    630 }
     623}
Note: See TracChangeset for help on using the changeset viewer.