[Ayuda,program os invoco XD] Estructura programa piedra,papel, tijeras en formato C

Unido
agosto 13, 2008
Mensajes
3,517
Karma
723
Ubicación
Barcelona
Buenas, he hecho el programa: piedra, papel, tijeras en C y a ver que os parece (si hay algún error comentadlo porfavor). también si modificaríais algo... pero no pueden haber void ;)
PHP:
#include <stdio.h>
#include <stdlib.h>
#include <conio.c>
#include <time.h>

main()
{
    int num,pc,estatjugador,estatpc;
    printf("Tria: 1. Pedra | 2. Paper | 3. Tissores:\n ");
    srand(time(NULL));
    scanf("%i", &num);
    fflush(stdin);

    estatjugador=0;
    estatpc=0;
        
    while ((estatjugador != 3) && (estatpc != 3))
    {
        pc = (rand()% 3)+1;
        
        printf("\n\nJugador: %i\nOrdinador: %i",estatjugador,estatpc);
        scanf("%i",&num);
        fflush(stdin);
        
        if (pc == 1)
        {
            printf("\nPedra\n");
        }
        
        if (pc == 2)
        {
            printf("\nPaper\n");
        }
        
        if (pc == 3)
        {
            printf("\nTissores\n");
        }
        
        switch (num)
        {
            case (1): printf("\nPedra");
            break;
        
            case (2): printf("\nPaper");
            break;
        
            case (3): printf("\nTissores");
            break;
        }
        
        if (pc==num)
        {
            estatjugador+0;
            estatpc+0;
        }
        
        if ((num == 3 && pc == 1) || (num == 1 && pc == 2) || (num == 2 && pc == 3))
        {
            estatjugador++;
        }
        
        if ((num == 1 && pc == 3) || (num == 2 && pc == 1) || (num == 3 && pc == 2))
        {
            estatpc++;
        }
    }
    
    printf("\nJugador: %i\nOrdinador: %i",estatjugador,estatpc);
    
    if (estatjugador == 3)
    {
        printf("\n\nEl jugador ha guanyat");
    }
    
    if (estatpc == 3)
    {
        printf("\n\nL'ordinador ha guanyat");
    }
}
 
Última edición:
M

mugan86

pon un random para que te de los resultados aleatoriamente. En el tema del código no te puedo ayudar, ya que en C yo me pierdo, ya que solo conozco Java y Visual Basic.
 
Unido
agosto 13, 2008
Mensajes
3,517
Karma
723
Ubicación
Barcelona
pon un random para que te de los resultados aleatoriamente. En el tema del código no te puedo ayudar, ya que en C yo me pierdo, ya que solo conozco Java y Visual Basic.
El programa tiene que dar a elegir al usuario entre piedra, papel o tijera (1,2,3). Tiene que mostrar lo seleccionado, acumular los puntos, decir el ganador...
PD:donde iría colocado el random?
 
Unido
noviembre 22, 2007
Mensajes
1,473
Karma
335
el random utilizalo para generar lo de el pc, por ejemplo lo situas antes de que el usuario introduzca su opcion, y eso dentro de un blucle do while hasta que quieras salir.
por ejemplo(no se c pero si java que son mas o menos igual la sintaxis)

do{

generar con random la opcion del pc
ahora le pides a el usuario que meta su opcion
aqui haces todas las comparaciones necesarias para saber quien ha ganado
haces el aumento de contador de quien ha ganado y las demas cosas que necesites

}while(salir=false) //por ejemplo para salir que pulse el 4
 
Última edición:
Unido
agosto 13, 2008
Mensajes
3,517
Karma
723
Ubicación
Barcelona
Bueno, ya lo he terminado. A ver si está bien:

PHP:
#include <stdio.h>
#include <stdlib.h>
#include <conio.c>
#include <time.h>

main()
{
	int num,pc,estatjugador,estatpc;
	printf("Tria: 1. Pedra | 2. Paper | 3. Tissores:\n ");
	srand(time(NULL));
	scanf("%i", &num);
	fflush(stdin);

	estatjugador=0;
	estatpc=0;
		
	while ((estatjugador != 3) && (estatpc != 3))
	{
		pc = (rand()% 3)+1;
		
		printf("\n\nJugador: %i\nOrdinador: %i",estatjugador,estatpc);
		scanf("%i",&num);
		fflush(stdin);
		
		if (pc == 1)
		{
			printf("\nPedra\n");
		}
		
		if (pc == 2)
		{
			printf("\nPaper\n");
		}
		
		if (pc == 3)
		{
			printf("\nTissores\n");
		}
		
		switch (num)
		{
			case (1): printf("\nPedra");
			break;
		
			case (2): printf("\nPaper");
			break;
		
			case (3): printf("\nTissores");
			break;
		}
		
		if (pc==num)
		{
			estatjugador+0;
			estatpc+0;
		}
		
		if ((num == 3 && pc == 1) || (num == 1 && pc == 2) || (num == 2 && pc == 3))
		{
			estatjugador++;
		}
		
		if ((num == 1 && pc == 3) || (num == 2 && pc == 1) || (num == 3 && pc == 2))
		{
			estatpc++;
		}
	}
	
	printf("\nJugador: %i\nOrdinador: %i",estatjugador,estatpc);
	
	if (estatjugador == 3)
	{
		printf("\n\nEl jugador ha guanyat");
	}
	
	if (estatpc == 3)
	{
		printf("\n\nL'ordinador ha guanyat");
	}
}
 
Unido
octubre 25, 2007
Mensajes
11,007
Karma
5,994
Ubicación
Barcelona
Me he mirado el codigo por encima y parece estar bien. Lo del random no tiene sentido porque juegan 3 usuarios por lo que el valor (piedra, papel o tijera) lo definen ellos. Si jugaras contra la maquina entonces si, un random es necesario porque sino se sabe siempre que va a salir.

Por cierto, es una putada que no os dejen utilizar voids, es como castrar al personal XD
 

txfloppy

Baneado.
Unido
marzo 9, 2009
Mensajes
447
Karma
68
pq usas primero if y luego switch?? usa switch para las 2 opciones.

PD: solo hay 1 cosa peor que c, el c++
 
Última edición:

perdudet

Baneado.
Unido
febrero 15, 2008
Mensajes
2,732
Karma
1,846
Ubicación
Kornella City
diós... hacía siglos que no leia código en C XD

esto de programar en VB me está trastocando mis neuronas XDXD

yo el programa lo veo correcto ;)

PD: que C y C++ sea vomitivo no quita que sea el mejor sistema para coger mentalidad de programador... sin C yo almenos no sería nadie en el mundo de la programación :) así que tenemos mucho que agradecerle...
 
Unido
agosto 13, 2008
Mensajes
3,517
Karma
723
Ubicación
Barcelona
Me he mirado el codigo por encima y parece estar bien. Lo del random no tiene sentido porque juegan 3 usuarios por lo que el valor (piedra, papel o tijera) lo definen ellos. Si jugaras contra la maquina entonces si, un random es necesario porque sino se sabe siempre que va a salir.

Por cierto, es una putada que no os dejen utilizar voids, es como castrar al personal XD
el random si que es necesario porque se juega contra la maquina xD ademas, como ya has dicho, sirve para que el pc saque un numero aleatorio del 1 al 3.
Gracias a todos los que habeis contestado ;)
 
Superior