Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
games.C File Reference

Detailed Description

This macro runs three "games" that each nicely illustrate the graphics capabilities of ROOT.

Thanks to the clever usage of TTimer objects it looks like they are all executing in parallel (emulation of multi-threading). It uses the small classes generated in $ROOTSYS/test/Hello, Aclock, Tetris

#ifndef __RUN_GAMES__
void games()
{
gSystem->Load("libGui");
Bool_t UNIX = strcmp(gSystem->GetName(), "Unix") == 0;
Int_t st1 = gSystem->Load("$(ROOTSYS)/test/Aclock");
if (st1 == -1) {
printf("===>The macro games will try to build the Aclock library\n");
if (UNIX)
gSystem->Exec("(cd $ROOTSYS/test; make Aclock)");
else
gSystem->Exec("(cd %ROOTSYS%\\test && nmake -f Makefile.win32 Aclock.dll)");
st1 = gSystem->Load("$(ROOTSYS)/test/Aclock");
}
Int_t st2 = gSystem->Load("$(ROOTSYS)/test/Hello");
if (st2 == -1) {
printf("===>The macro games will try to build the Hello library\n");
if (UNIX)
gSystem->Exec("(cd $ROOTSYS/test; make Hello)");
else
gSystem->Exec("(cd %ROOTSYS%\\test && nmake -f Makefile.win32 Hello.dll)");
st2 = gSystem->Load("$(ROOTSYS)/test/Hello");
}
Int_t st3 = gSystem->Load("$(ROOTSYS)/test/Tetris");
if (st3 == -1) {
if (UNIX) {
printf("===>The macro games will try to build the Tetris library\n");
gSystem->Exec("(cd $ROOTSYS/test; make Tetris)");
} else {
gSystem->Exec("(cd %ROOTSYS%\\test && nmake -f Makefile.win32 Tetris.dll)");
}
st3 = gSystem->Load("$(ROOTSYS)/test/Tetris");
}
if (st1 || st2 || st3) {
printf("ERROR: one of the shared libs in $ROOTSYS/test didn't load properly\n");
return;
}
gROOT->ProcessLine("#define __RUN_GAMES__ 1");
//Add this for CLING not to complain
gROOT->ProcessLine("#include \"Hello.h\"");
gROOT->ProcessLine("#include \"Aclock.h\"");
gROOT->ProcessLine("#include \"Tetris.h\"");
gROOT->ProcessLine("#include \"games.C\"");
gROOT->ProcessLine("rungames()");
gROOT->ProcessLine("#undef __RUN_GAMES__");
}
#else
class Hello;
class Aclock;
class Tetris;
void rungames()
{
// run the dancing Hello World
Hello *hello = new Hello();
// run the analog clock
Aclock *clock = new Aclock();
// run the Tetris game
Tetris *tetris = new Tetris();
}
#endif
std::string hello(std::string who, std::string msg)
Definition FunModule.C:5
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
#define gROOT
Definition TROOT.h:407
R__EXTERN TSystem * gSystem
Definition TSystem.h:560
const char * GetName() const override
Returns name of object.
Definition TNamed.h:47
virtual Int_t Exec(const char *shellcmd)
Execute a command.
Definition TSystem.cxx:640
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
Definition TSystem.cxx:1842
Author
Valeriy Onuchin

Definition in file games.C.