diff --git a/pmc/main.cc b/pmc/main.cc new file mode 100644 --- /dev/null +++ b/pmc/main.cc @@ -0,0 +1,107 @@ +/*** + * + * $Id: main.cc,v 1.1.1.1 2008-04-28 17:33:22 mbroeker Exp $ + * $Source: /development/cpp/pmc/main.cc,v $ + * + */ + +#include +#include + +unsigned long color; +SDL_Surface *screen; + +#ifndef STEP +#define STEP 1 +#endif + +int main (int argc, char **argv) +{ + + unsigned long red, black; + SDL_Event event; + + if (argc != 2) { + std::cout << "USAGE: " << argv[0] + << " height" << std::endl; + exit (0); + } + int h = atoi (argv[1]); + + if ((h < 10) || (h >= 360)) + h = 200; + + Vector p1 (0, 0, 0); + Vector p2 (0, h, 0); + Vector p3 (h, 0, 0); + Vector p4 (h, h, 0); + + SDL_Init (SDL_INIT_VIDEO); + screen = SDL_SetVideoMode (1010, 700, 16, SDL_HWSURFACE); + red = SDL_MapRGB (screen->format, 0xff, 0x00, 0x00); + black = SDL_MapRGB (screen->format, 0x00, 0x00, 0x00); + + Cube *c = new Cube (p1, p2, p3, p4, h); + Cube *d = new Cube (p1, p2, p3, p4, h); + + c->move (Vector (100, 250, 0)); + d->move (Vector (400, 250, 0)); + + bool running = true; + int x, y, z; + + x = y = z = 0; + + while (running) { + SDL_PollEvent (&event); + + if (event.type == SDL_QUIT) + running = false; + + if (event.type == SDL_KEYDOWN) { + color = black; + c->show (); + d->show (); + color = red; + + switch (event.key.keysym.sym) { + case SDLK_ESCAPE: + running = false; + break; + + case SDLK_UP: + c->move ((Vector (x, y - STEP, z))); + d->move ((Vector (x, y - STEP, z))); + break; + + case SDLK_DOWN: + c->move ((Vector (x, y + STEP, z))); + d->move ((Vector (x, y + STEP, z))); + break; + + case SDLK_LEFT: + c->move ((Vector (x - STEP, y, z))); + d->move ((Vector (x - STEP, y, z))); + break; + + case SDLK_RIGHT: + c->move ((Vector (x + STEP, y, z))); + d->move ((Vector (x + STEP, y, z))); + break; + default: + break; + } + + c->show (); + d->show (); + SDL_Flip (screen); + } + } + + delete c; + delete d; + + SDL_Quit (); + + return 0; +}