[Home]
/************************************************************************************
    What will you do if some one asks you to write a game, given just five minutes.
       Well I just thought of it and wrote this simple code within 10 minutes :
                   Box Maniac Written in 10 minutes by Venkatesh.S
************************************************************************************/


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

#define SIZE 3

int i_Array[SIZE+1][SIZE+1];

int i_Randomize( );
int i_Check( );
int i_Print( );

void main( )
{
        int i_Input = 1, i_Moves = 0;
        int i_X = SIZE;
        int i_Y = SIZE;

        i_Randomize( );

        while ( !i_Check( ) )
        {
                clrscr( );
                printf( "Box Maniac : Written by Venkatesh.S\n" );

                i_Print( );

                printf( "Instructions\n1->Move Up\n2->Move Down\n3->Move Left\n4->Move Right\n0 or any other number->Quit");
                printf( "\nMoves : %d\n", i_Moves++ );
                printf( "\nWaiting for your input\n:" );
                scanf( "%d", &i_Input );
                if ( i_Input == 0 || i_Input > 4 ) break;

                switch( i_Input )
                {
                        case 1: /* Up */
                                if ( i_X < SIZE )
                                {
                                        i_Array[i_X][i_Y] = i_Array[i_X + 1][i_Y];
                                        i_Array[i_X + 1][i_Y] = 0;
                                        i_X = i_X + 1;
                                }
                                else
                                        printf("\nNo way to move up \n" );
                                break;
                        case 2: /* Down */
                                if ( i_X > 1 )
                                {
                                        i_Array[i_X][i_Y] = i_Array[i_X - 1][i_Y];
                                        i_Array[i_X - 1][i_Y] = 0;
                                        i_X = i_X - 1;
                                }
                                else
                                        printf("\n No way to move down \n" );
                                break;
                        case 3: /* Left */
                                if ( i_Y < SIZE )
                                {
                                        i_Array[i_X][i_Y] = i_Array[i_X][i_Y + 1];
                                        i_Array[i_X][i_Y + 1] = 0;
                                        i_Y = i_Y + 1;
                                }
                                else
                                        printf("\nNo way to left \n" );
                                break;
                        case 4: /* Right */
                                if ( i_Y > 1 )
                                {
                                        i_Array[i_X][i_Y] = i_Array[i_X][i_Y - 1];
                                        i_Array[i_X][i_Y - 1] = 0;
                                        i_Y = i_Y - 1;
                                }
                                else
                                        printf("\n No way to move down \n" );
                                break;
                        default:
                                break;
                }
        }
        if ( i_Check( ) ) printf( "You Won. " );
        printf( "Bye" );
        getch( );
}

int i_Randomize( )
{
        int i_Magic[SIZE*SIZE+1];
        int i, j, k = 0, l;

        for ( i = 1; i < SIZE*SIZE; i++ )
        {
                randomize( );
                k = ( rand( ) % ( (SIZE*SIZE) - 1) ) + 1;
                j = 0;
                while ( j == 0 )
                {
                        j = 1;
                        if ( i == 1 )
                                j = 1;
                        else
                        {
                                for ( l = 1; l < i; l++ )
                                        if ( i_Magic[l] == k ) j = 0;
                        }
                        if ( j == 1 ) i_Magic[i] = k;
                        k = ( rand( ) % ( (SIZE*SIZE) - 1) ) + 1;
                }
        }

        i_Magic[SIZE*SIZE] = 0;

        k = 1;
        for ( i = 1; i <= SIZE; i++ )
                for ( j = 1; j <= SIZE; j++ )
                {
                        i_Array[i][j] = i_Magic[k];
                        k++;
                }

        return 1;
}

int i_Print( )
{
        int i, j, k;
        int i_Printline;
        for ( i_Printline = 0; i_Printline < (SIZE * 8) + 2; i_Printline++ ) printf( "-" );
                printf("\n");
        for ( i = 1; i <= SIZE; i++ )
        {
                printf( "|" );
                for ( j = 1; j <= SIZE; j++ )
                {
                        printf( "\t%d", i_Array[i][j] );
                }
                printf( "|\n" );
        }
        for ( i_Printline = 0; i_Printline < (SIZE * 8) + 2; i_Printline++ ) printf( "-" );
                printf("\n");
        return 1;
}

int i_Check( )
{
        int i, j, k = 1;
        for ( i = 1; i <= SIZE; i++ )
        {
                for ( j = 1; j <= SIZE; j++ )
                {
                        if ( ( i == SIZE ) && ( j == SIZE - 1 ) ) return 1;
                        if ( i_Array[i][j] != k++ ) return 0;
                }
                printf( "\n" );
        }
return 1;
}
[Home]

Syntax highlighted by Code2HTML, v. 0.9.1