pimp my code, a small xdemo
committer: Markus Bröker <mbroeker@largo.homelinux.org>
/***
*
* $Id: main.cc,v 1.1.1.1 2008-04-28 17:33:22 mbroeker Exp $
* $Source: /development/cpp/pmc/main.cc,v $
*
*/
#include <cube.h>
#include <SDL/SDL.h>
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;
}