コード例 #1
0
//The main code is implemented here
void update_game()
{
	int type,i;
	check_game_over();
	global_type_block=squareshape;
	if(flag==1)
	{ 
		allow_movement=true;
		printf("\n\n");
		flag=0;
		// count=height/0.1;
		type= next_block_type;
		next_block_type= rand()%4 +1;
		// next_block_type=1;
		// type=2;
		global_type=type;
		color_block=rand()%3;
		printf("Creating the blocks\n");
		create_new_shape(type,color_block);
		update_created_status(1);
	}
	if(collision())
	{
		allow_movement=false;
		for ( i = 0; i < 4; ++i)
		{
			if(z[i]==8)
			{
				game_over();
			}
		}
		printf("type==%d\n",global_type );
		// fix_block_at_z();
		if(!collision())
		{
			allow_movement=true;
			move_down();
			return;
		}
		increment_board_status(global_type); 
		update_created_status(0);
		tetris_board->score+=5;
		printf("\nScore==%d\n",tetris_board->score );
		check_game_over();
		// for(i=0;i<4;++i)
		// {
		// 	printf("z==%f\n",tetris_board->board[CELL(x[i], y[i],0)]->pos[1] );
		// }
		flag=1;
	}
	else
	{
		move_down();
	}
}
コード例 #2
0
ファイル: tick.c プロジェクト: F483/cleanspace
void game_tick(){
  update_tick_avatar();
  update_tick_trash();
  update_tick_scores();
  play_player_warning();
  check_game_over();
}
コード例 #3
0
void move_block_max_down()
{
	int i;
	while(!collision())
	{
		for ( i = 0; i < 4 ; ++i)
		{
			if(z[i]==0) goto a;
		}
		move_down();
		tetris_board->score+=5;
	}
	a : for ( i = 0; i < 4; ++i)
	{
		if(z[i]==8)
		{
			game_over();
		}
	}
	increment_board_status(global_type);
	update_created_status(0);
	printf("\nScore==%d\n",tetris_board->score );
	check_game_over();
	flag=1;
}
コード例 #4
0
//To move the block by 0.1 units downward
void move_down()
{
	int i,j;
	check_game_over();
	printf("moved down 1 step\n");
	if(executed==1)
	{
		for ( i = 0; i < 4 ; ++i)
		{
			if(z[i]==0) return;
		}
		for ( i = 0; i < 4 ; ++i)
		{
			current_block=tetris_board->board[CELL(x[i], y[i],z[i])];
			view_status[x[i]][y[i]][z[i]]=0;
			z[i]--;
			view_status[x[i]][y[i]][z[i]]=1;
			// current_block=set_block(global_type_block, color_block,current_block);
			tetris_board_place_block_at_boardvalue(tetris_board,current_block, CELL(x[i], y[i],z[i]),z[i]);
		}
	}
	else
	{
		printf("executed =0\n");;
	}
	printf("moved 1 step\n");

}
コード例 #5
0
ファイル: jni_exports.cpp プロジェクト: jkuczek15/rlg327
 JNIEXPORT void JNICALL
   Java_com_example_hellojni_HelloJni_doMoves
    (JNIEnv *env, jobject obj)
  {
     do_moves(dungeon_UI::instance()->get_dungeon());
     check_game_over(dungeon_UI::instance()->get_dungeon());
  }
コード例 #6
0
ファイル: 소스.c プロジェクト: nwk1541/c_project
int main(void)
{
	int i;

	srand((unsigned)time(NULL));
	setcursortype(NOCURSOR);
	draw_title(); 
	reset();

	while (1)
	{
		for (i = 0; i<5; i++) //블록이 한칸떨어지는동안 5번 키입력받을 수 있음 
		{ 
			process_key(); //키입력확인 
			draw_game();
			Sleep(speed);
			if (crush_on&&check_crush(bx, by + 1, b_rotation) == false) 
				Sleep(100); //블록이 충돌중인경우 추가로 이동및 회전할 시간을 갖음
			if (space_key_on == 1) //스페이스바를 누른경우(hard drop) 추가로 이동및 회전할수 없음 break; 
			{ 
				space_key_on = 0;
				break;
			}
		}
		move_down();  
		check_level_up(); 
		check_game_over(); 
		if (new_block_on == 1)
			new_block(); // 뉴 블럭 flag가 있는 경우 새로운 블럭 생성 
	}
}
コード例 #7
0
ファイル: g_host.c プロジェクト: sivarajankumar/plutocracy
/******************************************************************************\
 Called to update server-side structures. Does nothing if not hosting.
\******************************************************************************/
void G_update_host(void)
{
        if (n_client_id != N_HOST_CLIENT_ID || i_limbo)
                return;
        N_poll_server();

        /* Spawn crates for the players */
        while (g_gibs < CRATES_MAX) {
                g_cost_t *loot;
                int tile;

                tile = G_tile_gib(-1, G_GT_CRATES);
                if (tile < 0)
                        break;

                /* Put some loot in the crate */
                loot = &g_tiles[tile].gib->loot;
                loot->cargo[G_CT_GOLD] = 10 * C_roll_dice(5, 15) - 250;
                loot->cargo[G_CT_CREW] = C_roll_dice(3, 3) - 3;
                loot->cargo[G_CT_RATIONS] = C_roll_dice(4, 5) - 4;
                loot->cargo[G_CT_WOOD] = C_roll_dice(5, 10) - 15;
                loot->cargo[G_CT_IRON] = C_roll_dice(5, 10) - 25;
        }

        check_game_over();
        publish_game_alive(FALSE);
}
コード例 #8
0
static void kill_balls (HWND hwnd, int x, int y)
{
    if (!field [x][y].color)
        return;
    
    if (tagged_count < 2)
        return;

    set_score (score + (tagged_count - 2) * (tagged_count - 2));
    compress_y ();
    compress_x ();
    InvalidateRect (hwnd, &rcBoard, FALSE);
    check_game_over (hwnd);
}
コード例 #9
0
ファイル: same-gnome.c プロジェクト: cstrahan/aduni
static void
kill_balls (int x, int y)
{
	if (!field [x][y].color)
		return;
	
	if (tagged_count < 2)
		return;

	set_score (score + (tagged_count - 2) * (tagged_count - 2));
	compress_y ();
	compress_x ();
	gtk_widget_draw (draw_area, NULL);
	check_game_over ();
}
コード例 #10
0
ファイル: connection.c プロジェクト: dhanunjaya/termship
/**
 * Returns 0 if miss, -id if sunk, +id if hit (not sunk)
 */
int do_receive(const int sock)
{
  int nbytes,res;
  BMesg *buf;
  buf = CreateEmptyBMesg();
  if ( (nbytes = recv(sock, buf, MAX_MSG, 0) == -1) ) { /*recv error*/
    cleanup_ncurses();
    perror("recv error");
    exit(EXIT_FAILURE);
  }
  //we successfully returned from recv
  //printw("Received %d bytes of data...Such as %s\n", nbytes, buf->code);
  refresh();

  //parse buf to see if it was a hit and respond
  if ( (res = check_hit(buf)) != 0 ) { /*it was a hit*/
    if (check_game_over()) { /*the game is over*/
      send_hit(sock, GAME_OVER);
      return 100; //magic number...i know it's bad but i'm ready to be done.
    } else {
      if (res < 0) {
	send_hit(sock, SUNK);
	return res;
      } else if (res > 0) {
	send_hit(sock, NULL);
	return res;
      }
      else {
	cleanup_ncurses();
	perror("Unexpected case in do_receive");
	exit(EXIT_FAILURE);
      }
    }
  } else {
    send_miss(sock);
    return res; //res==0
  }
  //At this point we should have sent exactly 1 response to the other user *and returned*
  //WE SHOULD NEVER GET HERE
  cleanup_ncurses();
  perror("Reached unexpected worlds....");
  exit(EXIT_FAILURE);
  return -1; //just to make the compiler happy
}
コード例 #11
0
ファイル: tetris.c プロジェクト: lite-plate/CTetris
static void update(Tetris *tetris)
{
    if (tetris->key_quit) {
        Tetris_destroy(tetris);
        exit(0);
    }
    else if (tetris->key_pause) {
        if (tetris->game_state == RUNNING) {
            tetris->game_state = PAUSED;
            Renderer_erase_panel_labels(tetris->renderer);
            Renderer_erase_panel_line_counter(tetris->renderer);
            Renderer_erase_panel_score(tetris->renderer);
            Renderer_erase_panel_level(tetris->renderer);

            Renderer_draw_pause_message(tetris->renderer);
        }
        else if (tetris->game_state == PAUSED) {
            tetris->game_state = RUNNING;
            Renderer_erase_pause_message(tetris->renderer);

            Renderer_draw_panel_labels(tetris->renderer);
            Renderer_draw_panel_line_counter(tetris->renderer,
                                             tetris->lines_completed);
            Renderer_draw_panel_score(tetris->renderer, tetris->score);
            Renderer_draw_panel_level(tetris->renderer, tetris->level);
        }
    }

    if (tetris->game_state != PAUSED) {
        if (collision(COORDINATE_BOTTOM_COLLISION,
                      tetris->current_block,
                      tetris->renderer->buffer)
        ) {
            ++tetris->movement_frame_counter;
            if (tetris->movement_frame_counter == tetris->movement_frame_delay) {
                tetris->movement_frame_counter = 0;

                Renderer_draw_block(tetris->renderer, tetris->current_block);

                int complete_lines = check_complete_lines(tetris);

                next_block(tetris);

                check_game_over(tetris);

                update_score(tetris, complete_lines);
                update_level(tetris);

                Renderer_draw_panel_score(tetris->renderer, tetris->score);
                Renderer_draw_panel_level(tetris->renderer, tetris->level);

                tetris->renderer->buffer->dirty = 1;
            }
        }

        if (!collision(COORDINATE_BOTTOM_COLLISION,
                       tetris->current_block,
                       tetris->renderer->buffer)
        ) {
            ++tetris->gravity_frame_counter;
            if (tetris->gravity_frame_counter == tetris->gravity_frame_delay) {
                tetris->gravity_frame_counter = 0;
                ++tetris->current_block->y;
                tetris->renderer->buffer->dirty = 1;
            }
        }
        if (tetris->key_drop) {
            while (!collision(COORDINATE_BOTTOM_COLLISION,
                              tetris->current_block,
                              tetris->renderer->buffer)
            ) {
                ++tetris->current_block->y;
                tetris->score += 2;
            }
            tetris->renderer->buffer->dirty = 1;
        }
        else if (tetris->key_rotate
                 && rotate_collision(tetris->current_block,
                                     tetris->renderer->buffer) != 1
        ) {
            Block_rotate(tetris->current_block);
            if (tetris->enable_ghost_block == 1) {
                set_ghost_block(tetris);
            }
            tetris->renderer->buffer->dirty = 1;
        }
        else if (tetris->key_ghost_block) {
            if (tetris->enable_ghost_block) {
                tetris->enable_ghost_block = 0;
            }
            else {
                tetris->enable_ghost_block = 1;
                set_ghost_block(tetris);
            }
            tetris->renderer->buffer->dirty = 1;
        }
        else if (tetris->key_left
                 && !collision(COORDINATE_LEFT_COLLISION,
                               tetris->current_block,
                               tetris->renderer->buffer)
        ) {
            --tetris->current_block->x;
            if (tetris->enable_ghost_block == 1) {
                set_ghost_block(tetris);
            }
            tetris->renderer->buffer->dirty = 1;
        }
        else if (tetris->key_right
                 && !collision(COORDINATE_RIGHT_COLLISION,
                               tetris->current_block,
                               tetris->renderer->buffer)
        ) {
            ++tetris->current_block->x;

            if (tetris->enable_ghost_block == 1) {
                set_ghost_block(tetris);
            }

            tetris->renderer->buffer->dirty = 1;
        }
        else if (tetris->key_down
                 && !collision(COORDINATE_BOTTOM_COLLISION,
                               tetris->current_block,
                               tetris->renderer->buffer)
        ) {
            ++tetris->current_block->y;

            if (tetris->enable_ghost_block == 1) {
                set_ghost_block(tetris);
            }

            ++tetris->score;

            Renderer_draw_panel_score(tetris->renderer, tetris->score);

            tetris->renderer->buffer->dirty = 1;
        }
    }
}
コード例 #12
0
ファイル: screen.c プロジェクト: dhanunjaya/termship
/**
 * This function gets called from within init_game
 * It is called repeatedly if we are the server, else
 * it is just called once.
 */
void do_gameplay(const int sock, int fire)
{
  int x,y,res,win_status=0;
  char msg[100];

  for (int i=0; i<BOARD_SIZE; ++i) {
    for (int j=0; j<BOARD_SIZE; ++j) {
      player_shots[i][j] = UNTOUCHED;
      peer_shots[i][j] = UNTOUCHED;
    }
  }


  initShips();
  display_boards();

  Ship sh;
  do {
    if (fire == 1) { /*you're the attacker*/
      mvwprintw(status_win,1,1,"It's your turn!                    ");
      wrefresh(status_win);
            
      fire = 0;
      return_cords(&x, &y);
      res = do_fire(sock, x, y);


      place_hit_or_mis(player_win,res, x, y, false);
      switch (res) {
      case 0:
        mvwprintw(status_win,2,1,"Missed!                                    ");
        wrefresh(status_win);
        break;
      case 1:
        mvwprintw(status_win,2,1,"You hit them!                              ");
        wrefresh(status_win);
        /* play_boom("You hit them!"); */
        /* display_boards(); */
        break;
      case -1:
        mvwprintw(status_win,2,1,"You sunk them!                             ");
        wrefresh(status_win);
        /* play_boom("You sunk them!"); */
        /* display_boards(); */
        break;
      case -2:
        win_status = 1;
        mvwprintw(status_win,2,1,"Game over!                        ");
        wrefresh(status_win);
        fire = -1;
        break;
      }

    } else { /*you're the defender*/
      keypad(stdscr, FALSE);
      curs_set(0); // Set cursor invisible
      mvwprintw(status_win,1,1,"Waiting for other player to fire...");
      wrefresh(status_win);
      res = do_receive(sock);


      refresh();
      if (res == 0) {
        //wclear(status_win);
        mvwprintw(status_win,2,1,"They missed!                                ");
        //mvwprintw(status_win,5,1,"It's your turn!");
        wrefresh(status_win);
      } else if (res < 0) { //negative res indicates sunken ship
        sh = getShipById(-1*res); /* what a hack... */
        //wclear(status_win);
        mvwprintw(status_win,2,1,"They sunk your %s!               ", sh.name);
        /* play_boom("They sunk you!"); */
        /* display_boards(); */
        //mvwprintw(status_win,5,1,"It's your turn!");
        wrefresh(status_win);
      } else if (res==100);//do nothing...the game is over
      else {
        sh = getShipById(res);
        //wclear(status_win);
        mvwprintw(status_win,2,1,"They hit your %s!                ", sh.name);
        /* play_boom("They hit you!"); */
        /* display_boards(); */
        //mvwprintw(status_win,5,1,"It's your turn!");
        wrefresh(status_win);
      }
      mvwprintw(status_win,1,1,"It's your turn!                               ");
      fire = (check_game_over() == 1) ? -1 : 1;
      refresh();
    }
  } while(fire > -1);

  sprintf(msg, "Game over! You %s!\nPress any key to view battlefields.", win_status ? "won" : "lost");
  show_message_box(msg);
  getch();
  exchange_shipsets(sock);
  show_battlefields();
}
コード例 #13
0
ファイル: main.cpp プロジェクト: lastab/BagChal
int main()
{
    //initialize allegro
    allegro_init();
    install_keyboard();
    install_mouse();      
    //initialize video mode to 640x480
    set_color_depth(32);
    int ret = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
    install_sound(DIGI_AUTODETECT, MIDI_NONE, "") ;

    pointer = load_bitmap("pointer.bmp", NULL);
    board=load_bitmap("bord.bmp",NULL);
    tiger=load_bitmap("tiger.bmp",NULL);
    goat=load_bitmap("goat.bmp",NULL);
    target=load_bitmap("target.bmp",NULL);
    buffer = create_bitmap(640,480);
    // mouse
    set_mouse_sprite(pointer);
    set_mouse_sprite_focus(15,15);
    show_mouse(screen);
    //top
    top:;
    
    count_dead_goat = 0;
    count_steps = 0;
    
    reset_bord_player();
    textout_ex(buffer, font, "GOAT'S TURN",480, 1 , white, -1);
    show_bord_player();
    turn=2;  
//background sound
        background=load_sample("background.wav");
        play_sample(background, volume, panning, pitch, TRUE);

//wait
int tempx,tempy,temp_player ;    
while (!key[KEY_ESC])
{
//grab the current mouse values
mx = mouse_x;
my = mouse_y;
mb = (mouse_b & 1);

    

 temp_player= check_location_available(getx(mx),getx(my));
if (temp_player!=3 && mb==1)
{
    if (turn==1 && temp_player==1)
    {
             textout_ex(buffer, font, "TIGER'S TURN", 480, 1, 1, -1);
              textout_ex(buffer, font, "FIND TIGER PLACE",480, 1 , white, -1);
                  tempx=getx(mx);
                  tempy=gety(my);
                turn=11;
    }
    else if(turn==11 && temp_player==0)
    {
         if(check_movement_ok(tempx,tempy,getx(mx),gety(my))==1)
         {
        add_tiger_player(getx(mx),gety(my));
//sound
        sound=load_sample("tiger.wav");
        play_sample(sound, volume, panning, pitch, FALSE);
        remove_player(tempx,tempy);
        turn=2;
         textout_ex(buffer, font, "FIND TIGER PLACE", 480, 1, 1, -1);
         textout_ex(buffer, font, "GOAT'S TURN",480, 1 , white, -1);
         }
         else if(check_jump_movement_ok(tempx,tempy,getx(mx),gety(my))==1)
         {
        add_tiger_player(getx(mx),gety(my));
        remove_player(tempx,tempy);
//sound
        sound=load_sample("tiger.wav");
        play_sample(sound, volume, panning, pitch, FALSE);

        remove_player((tempx+getx(mx))/2,(tempy+gety(my))/2);
        turn=2;
         textout_ex(buffer, font, "FIND TIGER PLACE", 480, 1, 1, -1);
         textout_ex(buffer, font, "GOAT'S TURN",480, 1 , white, -1);
         count_dead_goat++;
         }

         
    }
    else if(turn==2  && temp_player==2 && count_steps>=20)
    {
         turn=22;
         textout_ex(buffer, font, "GOAT'S TURN",480, 1 , 1, -1);
         textout_ex(buffer, font, "FIND GOAT PLACE",480, 1 , white, -1);
                  tempx=getx(mx);
                  tempy=gety(my);

    }
    else if(turn==22 && temp_player==0)
    {
         if(check_movement_ok(tempx,tempy,getx(mx),gety(my))==1)
         {
//sound
        sound=load_sample("goat.wav");
        play_sample(sound, volume, panning, pitch, FALSE);

             add_goat_player(getx(mx),gety(my));
              remove_player(tempx,tempy);
    turn=1;
         textout_ex(buffer, font, "FIND GOAT PLACE",480, 1 , 1, -1);
         textout_ex(buffer, font, "TIGER'S TURN", 480, 1, white, -1);
         }
    }
    else if(turn==2 && temp_player==0 && count_steps<20)
    {
         count_steps++;
    add_goat_player(getx(mx),gety(my));
//sound
        sound=load_sample("goat.wav");
        play_sample(sound, volume, panning, pitch, FALSE);

    turn=1;
         textout_ex(buffer, font, "GOAT'S TURN",480, 1 , 1, -1);
         textout_ex(buffer, font, "TIGER'S TURN", 480, 1, white, -1);

    }
    if ( check_game_over()==1)
    {
         textout_ex(buffer, font, "GOAT WINS", 480, 30, white, -1);
         goto end;
         }
    else if ( check_game_over()==2)
    {
         textout_ex(buffer, font, "TIGER WINS", 480, 30, white, -1);
         goto end;
         }
    

    show_bord_player();
}
       if (turn==11)
    {     

          jump=check_possible_jump_movement(tempx,tempy);     
          move=check_possible_movement(tempx,tempy);
          show_possible_jump_movement(tempx,tempy);
          show_possible_movement(tempx,tempy);
          if( jump==0 && move==0 )
          {
          turn=1;
          textout_ex(buffer, font,"FIND TIGER PLACE" , 480, 1, 1, -1);
          textout_ex(buffer, font, "TIGER'S TURN",480, 1 , white, -1);
          show_bord_player();          
          }
    }
       if (turn==22)
    {
          move=check_possible_movement(tempx,tempy);
          show_possible_movement(tempx,tempy);          
          if (move==0)
          {
          turn=2;
          textout_ex(buffer, font, "FIND GOAT PLACE",480, 1 , 1, -1);
          textout_ex(buffer, font, "GOAT'S TURN", 480, 1, white, -1);
          show_bord_player();
          }

     
    }
    

/* uncheck tiget or goat to move
     if(turn==11 && mb==2)
     {  turn=1;
          textout_ex(buffer, font,"FIND TIGER PLACE" , 480, 1, 1, -1);
          textout_ex(buffer, font, "TIGER'S TURN",480, 1 , white, -1);
          show_bord_player();          
        }
     if(turn==22 && mb==2)
     {  turn=2;
          textout_ex(buffer, font,"FIND GOAT PLACE" , 480, 1, 1, -1);
          textout_ex(buffer, font, "GOAT'S TURN",480, 1 , white, -1);
            show_bord_player();
     }
*/


     
//pause
rest(10);
}
end:;



allegro_message("game over");    
//sound        
        sound=load_sample("clapping.wav");
        play_sample(sound, volume, panning, pitch, FALSE);
          textout_ex(screen, font, "PLAY AGAIN?(Y/N)",480, 10 , white, -1);        
while (!key[KEY_N])
{
 if(key[KEY_Y])
    goto top;
}
    set_mouse_sprite(NULL);
    destroy_sample(sound);        
    destroy_sample(background);    
    destroy_bitmap(pointer);
    destroy_bitmap(board);
    destroy_bitmap(tiger);
    destroy_bitmap(goat);
    destroy_bitmap(buffer);
    destroy_bitmap(target);
    allegro_exit();    
    return 0;
}