int main(int argc, char **argv){
  awake_the_weaver(); // Initializing Weaver API
  
  camera *cam = new_camera(0.0, 0.0, 100.0, 100.0);
  circle *star   = new_circle(50.0, 50.0, 20.0);
  circle *planet = new_circle(90.0, 90.0,  5.0);
  rectangle *trash = new_rectangle(75.0, 50.0, 1.25, 2.5);
  rectangle *ufo   = new_rectangle(25.0, 50.0, 1.5,  1.5);
  film_fullcircle(cam, star, YELLOW);
  film_fullcircle(cam, planet, BLUE);
  film_rectangle(cam, trash, GREEN);
  film_fullrectangle(cam, ufo, WHITE);

  int camera_moved = 0;

  // Main loop
  for(;;){
    get_input();
    if(keyboard[ESC]){
      break;
    }
	if(keyboard[UP] || keyboard[DOWN] || keyboard[LEFT] || keyboard[RIGHT] ||
			keyboard[MINUS] || keyboard[PLUS] || keyboard[ENTER]){
		film_fullcircle(cam, star, BLACK);
		film_fullcircle(cam, planet, BLACK);
		film_rectangle(cam, trash, BLACK);
		film_fullrectangle(cam, ufo, BLACK);
		camera_moved = 1;
	}
	if(keyboard[UP])
		cam -> y -= 1.0;
	if(keyboard[DOWN])
		cam -> y += 1.0;
	if(keyboard[LEFT])
		cam -> x -= 1.0;
	if(keyboard[RIGHT])
		cam -> x += 1.0;
	if(keyboard[PLUS])
		zoom_camera(cam, 1.01);
	if(keyboard[MINUS])
		zoom_camera(cam, 0.99);
	if(keyboard[ENTER])
		center_camera(cam, 50.0, 50.0);

	film_fullcircle(cam, planet, BLACK);
	rotate_circle(planet, 50.0, 50.0, 0.01);
	film_fullcircle(cam, planet, BLUE);

	if(camera_moved){
		film_fullcircle(cam, star, YELLOW);
		film_rectangle(cam, trash, GREEN);
		film_fullrectangle(cam, ufo, WHITE);
		camera_moved = 0;
	}

    weaver_rest(10000000);
  }
  may_the_weaver_sleep();
  return 0;
}
Beispiel #2
0
int main(int argc, char **argv){
  unsigned type = PLR_X_CPU;
  int key_pressed = 0;
  awake_the_weaver(); // Initializing Weaver API
  hide_cursor();
  copyleft();
  intro();
  surface *title = new_image("title.png");
  for(;;){
    int esc_pressed = 0;
    int x = (window_width - title -> width) / 2; 
    int y = (window_height - title -> height) / 2;
    fill_screen(BLACK); 
    draw_surface(title, window, x, y);
    draw_gametype(type % 4, x + 120, y + 60);
    key_pressed = 0;
    for(;;){
      get_input();
      if(keyboard[ESC]){
	esc_pressed = 1;
	break;
      }
      if(keyboard[ENTER]){
	fill_screen(BLACK);
	flush();
	game(type % 4);
	break;
      }
      else if(keyboard[LEFT]){
	if(!key_pressed){
	  type --;
	  draw_gametype(type % 4, x + 120, y + 60);
	}
      }
      else if(keyboard[RIGHT]){
	if(!key_pressed){
	  type ++;
	  draw_gametype(type % 4, x + 120, y + 60);
	}
      }
      key_pressed = keyboard[ANY];
      weaver_rest(10000000);
    }
    if(esc_pressed)
      break;
  }
  destroy_surface(title);
  may_the_weaver_sleep();
  return 0;
}
int main(int argc, char **argv){

  awake_the_weaver(); // Initializing Weaver API

  fill_screen(SCREEN_COLOR);

  // define the parametres
  circle ** many_circles;
  float ball_x, ball_y, radius;
  float *dx, *dy;
  int c_id;
  int num_circles = CIRCLE_NUMBER;
  if(argc > 1)
	  sscanf(argv[1], "%d", &num_circles);

  // alloc the memory
  many_circles = (circle *) malloc(num_circles* sizeof(circle*));
  dx = (float*)malloc(num_circles* sizeof(float));
  dy = (float*)malloc(num_circles* sizeof(float));

  // initialize the values
  for(c_id = 0; c_id < num_circles; c_id ++)
  {
	  radius = 50 + rand() % 50;
	  ball_x = window_width / 2;
	  ball_y = window_height / 2;
	  many_circles[c_id] = new_circle(ball_x, ball_y, radius);
	  unsigned int c_color = rand() % 3;
	  draw_circle(ball_x, ball_y, radius, c_color == 0?RED:c_color==1?GREEN:BLUE);
	  dx[c_id] = (rand() % 200 - 100) / 80.f;
	  dy[c_id] = (rand() % 200 - 100) / 80.f;
  }

  // Main loop
  for(;;){
    get_input();

    if(keyboard[ANY]){
      break;
    }
	
	// update status
	for(c_id = 0; c_id < num_circles; c_id ++)
	{
		draw_circle(many_circles[c_id] -> x, many_circles[c_id] -> y, many_circles[c_id] -> z, SCREEN_COLOR); // to erase

		ball_x = many_circles[c_id] -> x;
		ball_y = many_circles[c_id] -> y;
		radius = many_circles[c_id] -> z;

		ball_x += dx[c_id];
		ball_y += dy[c_id];
		if(ball_y < radius || ball_y > window_height - radius)
			dy[c_id]*= -1;
		if(ball_x < radius || ball_x > window_width - radius)
			dx[c_id]*= -1;

		many_circles[c_id] -> x	= ball_x;
		many_circles[c_id] -> y	= ball_y;
		unsigned int c_color = rand() % 3;
		draw_circle(many_circles[c_id] -> x, many_circles[c_id] -> y, many_circles[c_id] -> z, c_color == 0?RED:c_color==1?GREEN:BLUE); // to erase
	}
	weaver_rest(10000000);
  }

  free(many_circles);
  free(dx);
  free(dy);
  may_the_weaver_sleep();
  return 0;
}