在C中匹配游戏

时间:2013-11-30 20:36:16

标签: c matrix matching

很快:大家好!我更新了我的游戏,以便在新矩阵中打印两个卡片选项!但现在,第一个矩阵(将显示所有[$])不打印。此外,还有一张额外的[$]卡片打印。到目前为止我的代码是:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "stdio.h" // stdio.h significa cabecera de entrada y salida estándar

void imprimeGrid(char (*card)[4])
{
    int f,c;
    printf("     1    2    3    4\n");
    for (f = 0; f<4; f++) // para controlar el numero de filas
    {
        printf(" %i ",f+1); // para imprimir el numero de las columnas, hacer f+1
        for (c=0; c<4; c++)
        {
            printf(" [$] ",card[f][c]);
        }
        printf("\n");
    }
}
void juego() 
{
    int x1,y1,x2,y2;
    char card[4][4];
    printf ("El primer NIVEL: \n\n");
    card[0][0]='H';
    card[0][1]='O';
    card[0][2]='C';
    card[0][3]='O';
    card[1][0]='f';
    card[1][1]='H';
    card[1][2]='C';
    card[1][3]='H';
    card[2][0]='H';
    card[2][1]='C';
    card[2][2]='f';
    card[2][3]='O';
    card[3][0]='f';
    card[3][1]='C';
    card[3][2]='H';
    card[3][3]='f';

    printf("Tarjeta 1) Ingrese numero de fila: ");
    scanf("%i",&x1);
    printf("Ingrese numero de columna: ");
    scanf("%i",&y1);
    x1=x1-1;
    y1=y1-1;

    printf ("Su eleccion es:[%c]",card[x1][y1]);
    fflush (stdin);
    printf("\n \n");
    printf("Tarjeta 2) Ingrese numero de fila: ");
    scanf("%i",&x2);
    printf("Ingrese numero de columna: ");
    scanf("%i",&y2);
    x2=x2-1;
    y2=y2-1;
    printf ("Su eleccion es:[%c]",card[x2][y2]);
    printf("\n \n");

    int f,c;
    printf("     1    2    3    4\n");
    for (f = 0; f<4; f++)
    {
    printf(" %i ",f+1);
        for (c=0; c<4; c++)
        {
            if ((f==x1) && (c==y1))
            {
                printf(" [%c] ",card[f][c]);
            }
            if ((f==x2) && (c==y2))
            {
                printf(" [%c] ",card[f][c]);
            }
            else
           {
               printf(" [$] ");
           }
        }
    printf("\n");
    }

    if (card[x1][y1]==card[x2][y2])
    {
        printf("Tienes una pareja!\n");
    }
    else
    {
        printf("No tienes una pareja!\n");
    }

}

void main() 
{
    int again = 0;
    do 
    {
        juego();
        printf("Enter 1 to play again. Enter 0 to quit. ");
        scanf("%i",&again);
    } while(again);
}

1 个答案:

答案 0 :(得分:1)

您只打印一次网格。您可能希望对网格进行更改,然后再次打印。我还修了6个小错误。

更新3:已更改为符合新要求

这是新输出:

El primer NIVEL:

    1    2    3    4
 1  [@]  [@]  [@]  [@]
 2  [@]  [@]  [@]  [@]
 3  [@]  [@]  [@]  [@]
 4  [@]  [@]  [@]  [@]
Primera Posicion X (fila): 2
Primera Posicion Y (columna): 3
Su eleccion es:[C]

Segunda Posicion X: 3
Segunda Posicion Y: 4
Su eleccion es:[H]

    1    2    3    4
 1  [@]  [@]  [@]  [@]
 2  [@]  [@]  [@]  [@]
 3  [@]  [C]  [@]  [@]
 4  [@]  [@]  [H]  [@]
Enter 1 to play again. Enter 0 to quit. 1
Primera Posicion X (fila): 1
Primera Posicion Y (columna): 1
Su eleccion es:[H]

Segunda Posicion X: 2
Segunda Posicion Y: 2
Su eleccion es:[f]

    1    2    3    4
 1  [H]  [@]  [@]  [@]
 2  [@]  [f]  [@]  [@]
 3  [@]  [C]  [@]  [@]                       <- keep visible
 4  [@]  [@]  [H]  [@]
Enter 1 to play again. Enter 0 to quit.

代码:

#include "stdio.h"
void printGrid(char (*selected)[4], char (*card)[4]) {
    printf("    1    2    3    4\n");
    int f; for (f = 0; f<4; f++) // para controlar el numero de filas
    {
        printf(" %i ",f+1); // para imprimir el numero de las columnas, hacer f+1
        int c; for (c=0; c<4; c++)
        {
            if( selected[f][c] ) {
                printf(" [%c] ",card[f][c]);
            } else {
                printf(" [@] ");
            }
        }
        printf("\n");
    }
}
void juego(char (*selected)[4], char (*card)[4])
{
    int x1,y1,x2,y2;

    printf("Primera Posicion X (fila): ");
    scanf("%i",&x1);
    printf("Primera Posicion Y (columna): ");
    scanf("%i",&y1);
    x1=x1-1;
    y1=y1-1;

    selected[y1][x1] = 1;

    printf ("Su eleccion es:[%c]",card[x1][y1]);
    fflush (stdin);
    printf("\n \n");
    printf("Segunda Posicion X: ");
    scanf("%i",&x2);
    printf("Segunda Posicion Y: ");
    scanf("%i",&y2);
    x2=x2-1;
    y2=y2-1;
    printf ("Su eleccion es:[%c]",card[x2][y2]);
    printf("\n \n");

    selected[y2][x2] = 1;

    printGrid(selected, card); 
}

int main() 
{
    int again = 0;

    char card[4][4];
    printf ("El primer NIVEL: \n\n");
    card[0][0]='H';
    card[0][1]='O';
    card[0][2]='C';
    card[0][3]='O';
    card[1][0]='f';
    card[1][1]='f';
    card[1][2]='C';
    card[1][3]='H';
    card[2][0]='H';
    card[2][1]='C';
    card[2][2]='f';
    card[2][3]='H';
    card[3][0]='f';
    card[3][1]='C';
    card[3][2]='H';
    card[3][3]='O';

    char selected[4][4] = { 0 };

    printGrid(selected, card);

    do {
        juego(selected, card);
        printf("Enter 1 to play again. Enter 0 to quit. ");
        scanf("%i",&again);
    } while(again);

    return 0;
}