C/Visual C - toque y fama

 
Vista:

toque y fama

Publicado por karaks (1 intervención) el 04/12/2002 13:50:18
quien sabe como puedo hacer el juego toque y fama en c con punteros o quien lo ha visto.... please
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Implementación del juego "Toque y fama" en C utilizando punteros

Publicado por Alejandro (980 intervenciones) el 22/04/2025 22:47:44
Karaks, para crear el juego Toque y fama en C utilizando punteros, primero es importante entender la lógica del juego. En este juego, el computador genera una secuencia de números aleatorios, y el jugador debe adivinar esta secuencia. Las coincidencias se clasifican en "toques" (números correctos pero en la posición incorrecta) y "famas" (números correctos en la posición correcta).

Aquí tienes un esquema básico de cómo podrías implementar el juego en C:

1. Generar la secuencia secreta: Utiliza un arreglo para almacenar la secuencia de números generados aleatoriamente. Asegúrate de que todos los números sean distintos.

2. Solicitar al usuario que ingrese sus intentos: Puedes usar un bucle para permitir que el usuario ingrese sus intentos hasta que adivine la secuencia o alcance el número máximo de intentos.

3. Comparar los intentos con la secuencia secreta: Utiliza punteros para recorrer los arreglos y contar los toques y famas.

4. Mostrar los resultados: Después de cada intento, informa al usuario cuántos toques y famas obtuvo.

Aquí tienes un ejemplo básico de cómo podría verse el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define LONGITUD 4 // Longitud de la secuencia
 
void generar_secuencia(int *secuencia) {
    int i, j;
    for (i = 0; i < LONGITUD; i++) {
        int num;
        int repetido;
        do {
            repetido = 0;
            num = rand() % 10; // Números del 0 al 9
            for (j = 0; j < i; j++) {
                if (secuencia[j] == num) {
                    repetido = 1; // Número ya existe
                    break;
                }
            }
        } while (repetido);
        secuencia[i] = num;
    }
}
 
void comparar(int *secuencia, int *intento, int *toques, int *famas) {
    *toques = 0;
    *famas = 0;
    int i, j;
    int cont_secuencia[10] = {0}; // Contador para la secuencia
    int cont_intento[10] = {0}; // Contador para el intento
 
    for (i = 0; i < LONGITUD; i++) {
        if (secuencia[i] == intento[i]) {
            (*famas)++;
        } else {
            cont_secuencia[secuencia[i]]++;
            cont_intento[intento[i]]++;
        }
    }
 
    for (i = 0; i < 10; i++) {
        *toques += (cont_secuencia[i] < cont_intento[i]) ? cont_secuencia[i] : cont_intento[i];
    }
}
 
int main() {
    srand(time(NULL));
    int secuencia[LONGITUD];
    generar_secuencia(secuencia);
 
    int max_intentos = 10; // Número máximo de intentos
    for (int i = 0; i < max_intentos; i++) {
        int intento[LONGITUD];
        printf("Intento %d: Ingresa %d números (0-9): ", i + 1, LONGITUD);
        for (int j = 0; j < LONGITUD; j++) {
            scanf("%d", &intento[j]);
        }
 
        int toques, famas;
        comparar(secuencia, intento, &toques, &famas);
        printf("Toques: %d, Famas: %d\n", toques, famas);
 
        if (famas == LONGITUD) {
            printf("¡Felicidades! Has adivinado la secuencia.\n");
            break;
        }
    }
 
    return 0;
}

Este código es un punto de partida y puede ser mejorado. Asegúrate de manejar entradas inválidas y de ajustar la longitud de la secuencia según tus necesidades. Además, puedes explorar el uso de punteros para mejorar la eficiencia y la claridad del código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar