//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(); } }
void game_tick(){ update_tick_avatar(); update_tick_trash(); update_tick_scores(); play_player_warning(); check_game_over(); }
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; }
//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"); }
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()); }
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가 있는 경우 새로운 블럭 생성 } }
/******************************************************************************\ 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); }
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); }
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 (); }
/** * 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 }
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; } } }
/** * 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(); }
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; }