Thread: problem with program

  1. #1
    Registered User
    Join Date
    Apr 2019
    Posts
    1

    problem with program

    Hello,

    i have problem with program for 2048 like game K. It needs to be compilated with
    $ gcc -std=c11 -Werror -Wall -Wconversion -lm But i got error and cant figure it out. Problem is with source file k.c here is screenshot Screenshot by Lightshot. It says return code is different than expected and 3 function were never used. Whats wrong there?
    Any help would be appreciated. If i post it on wrong category im sorry.

    Makefile.txt
    main.c
    k.h
    ui.c
    ui.h

    here is k.c

    Code:
    #include <stdlib.h>
    
    #include "k.h"
    
    void add_random_tile(struct game *game){
        int row, col;
     // find random, but empty tile
        do{
            row = rand() % SIZE;
            col = rand() % SIZE;
        }while(game->board[row][col] != ' ');
    
        // place to the random position 'A' or 'B' tile
        if(rand() % 2 == 0){
            game->board[row][col] = 'A';
        }else{
            game->board[row][col] = 'B';
        }
    }
    bool is_game_won(const struct game game)
    {
    for (int i=0;i<4;i++) 
           {
    	for(int j=0;j<4;j++) 
    		{
    		 if(game.board[i][j]=='K') return true;
    		}
           }
           return false;
    }
    
    bool is_move_possible(const struct game game)
    {
    for (int i=0;i<4;i++){
        for(int j=0;j<4;j++){
    
    		 if(game.board[i][j]==' ')  return true;
    	}
    }
    
    for (int i=0;i<4;i++){ 
    
    	for(int j=0;j<4;j++){    
    		 if(game.board[i][j] == game.board[i][j+1])  return true;
    	}
    
    }
    for (int i=0;i<4;i++){  
    
    	for(int j=0;j<4;j++){
    
    		 if(game.board[i][j] == game.board[i+1][j])
    		 return true;
    	}
    
    }
            return false;
    }
    bool update(struct game *game, int dy, int dx){
    	char znaky[12] = "ABCDEFGHIJK";
         int body[12] = { 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 };
         
        if (dx == 1 && dy == 0){
        for (int poc = 0; poc < 4; poc++ ){
              for (int row = 0; row < 4; row++){ 
               
                 for (int col = 2; col >= 0; col--){
                    if (game->board[row][col+1] == ' '){
                    game->board[row][col+1] = game->board[row][col];
                    game->board[row][col] = ' ' ; }
                 }
                 for (int abc = 0; abc < 12; abc++ ){
                    for (int col = 2; col >= 0; col--){
                    if (game->board[row][col+1] == znaky[abc] && game->board[row][col] == znaky[abc]){
                       game->board[row][col+1] = znaky[abc+1];
                       game->board[row][col] = ' ';
                       game->score = game->score + (2*body[abc]);}
                    }
                 }
                 for (int col = 2; col >= 0; col--){
                    if (game->board[row][col+1] == ' '){
                    game->board[row][col+1] = game->board[row][col];
                    game->board[row][col] = ' ' ; }
                 }
              }
           }
        return true;   
        }
                   
        else if (dx == -1 && dy == 0){ 
           for (int poc = 0; poc < 4; poc++ ){
              for (int row = 0; row < 4; row++){
                
                 for (int col = 1; col < 4; col++){
                    if (game->board[row][col-1] == ' '){
                    game->board[row][col-1] = game->board[row][col];
                    game->board[row][col] = ' ' ; }
                 }
                 for (int abc = 0; abc < 12; abc++ ){
                    for (int col = 1; col < 4; col++){
                    if (game->board[row][col-1] == znaky[abc] && game->board[row][col] == znaky[abc]){
                       game->board[row][col-1] = znaky[abc+1];
                       game->board[row][col] = ' ';
                       game->score = game->score + (2*body[abc]);}
                    }
                 }
                 for (int col = 1; col < 4; col++){
                    if (game->board[row][col-1] == ' '){ 
                    game->board[row][col-1] = game->board[row][col];
                    game->board[row][col] = ' ' ; }
                 }
              }
           } 
        return true;             
        }
    
        else if (dx == 0 && dy == 1){ 
        for (int poc = 0; poc < 4; poc++ ){
              for (int col = 0; col < 4; col++){
              
                 for (int row = 2; row >= 0; row--){  
                    if (game->board[row+1][col] == ' '){
                    game->board[row+1][col] = game->board[row][col];
                    game->board[row][col] = ' ' ; }
                 }
                 for (int abc = 0; abc < 12; abc++ ){
                    for (int row = 2; row >= 0; row--){
                    if (game->board[row+1][col] == znaky[abc] && game->board[row][col] == znaky[abc]){
                       game->board[row+1][col] = znaky[abc+1];
                       game->board[row][col] = ' ';
                       game->score = game->score + (2*body[abc]);}
                    }
                 }
                 for (int row = 2; row >= 0; row--){  
                    if (game->board[row+1][col] == ' '){
                    game->board[row+1][col] = game->board[row][col];
                    game->board[row][col] = ' ' ; }
                 }
              }
           }
        return true;             
        }
    
        else if (dx == 0 && dy == -1){
           for (int poc = 0; poc < 3; poc++ ){
              for (int col = 0; col < 4; col++){
              
                 for (int row = 1; row < 4; row++){  
                    if (game->board[row-1][col] == ' '){
                    game->board[row-1][col] = game->board[row][col];
                    game->board[row][col] = ' ' ; }
                 }
                 for (int abc = 0; abc < 12; abc++ ){
                    for (int row = 1; row < 4; row++){
                    if (game->board[row+1][col] == znaky[abc] && game->board[row][col] == znaky[abc]){
                       game->board[row+1][col] = znaky[abc+1];
                       game->board[row][col] = ' ';
                       game->score = game->score + (2*body[abc]);}
                    }
                 }
                 for (int row = 1; row < 4; row++){  
                    if (game->board[row-1][col] == ' '){ 
                    game->board[row-1][col] = game->board[row][col];
                    game->board[row][col] = ' ' ; }
                 }
              }
           }
        return true;                      
        }
        else return false;
    }
    Last edited by Salem; 04-09-2019 at 10:20 AM. Reason: Formatting attachments

  2. #2
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,662
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. compiler problem or program problem
    By kelu in forum C Programming
    Replies: 1
    Last Post: 11-28-2018, 03:39 AM
  2. A problem with a c program HELP
    By osaea in forum C Programming
    Replies: 5
    Last Post: 08-20-2011, 07:49 AM
  3. Problem with I/O program
    By usernameisvalid in forum C Programming
    Replies: 14
    Last Post: 07-09-2011, 11:08 PM
  4. Replies: 4
    Last Post: 10-16-2008, 07:30 PM
  5. Math Equation Program (I can't find the problem with my program!)
    By masked_blueberr in forum C Programming
    Replies: 14
    Last Post: 07-06-2005, 11:53 AM

Tags for this Thread