Avatar billede the_party_dog Nybegynder
07. maj 2002 - 10:06 Der er 20 kommentarer og
2 løsninger

Hjælp med at komme igang

Jeg sidder på min læreplads, og skal lave noget til min mester, så han kan se at jeg har lært noget om ANSII C programmering, og jeg har da os fundet ud af en del, men har et lille problem. Jeg vil lave et mastermind-atig spil, hvor jeg vil lave en random command, så den vælger tilfældig for hver gang han starter spillet op, og den skal tælle hvor mange gange han har prøvet at gætte det, de punkter har jeg fået løst hver for sig.

Her er mit problem, jeg har bedt den om at lave 4 variabler, hvor der så kommer forskellige tal for hver gang, og jeg har os bedt den om at spørge om hans bud på hvilken farve det er(alt sammen er bygget op med tal, 1=rød, 2=gul, 3=grøn, 4=sort, 5=Hvid, 6=blå. Så nu vil jeg gerne få den til at sammenligne det tal som den selv har generet ved hjælp af random commanden, og det tal som jeg taster ind, og se om de er ens. Det kan jeg bare ikke få til at virke....

Håber at I fattede lidt af det jeg prøvede på at forklare, jeg er nybegynder, så bær over med mig.... Jeg vil ikke have en færdig løsning, jeg vil gerne lære af dette, men jeg sidder fast....
Avatar billede jpk Nybegynder
07. maj 2002 - 10:13 #1
Du beskriver ikke særkig specifikt hvad du ønsker, men hvis det er simpel talsammenligning:

int nColor = 2; // gul
int nRandom; // pseudo-tilfældigt tal

if(nColor == nRandom)
{
  // De er ens
}
else
{
  // de er forskellige
}
Avatar billede chries Nybegynder
07. maj 2002 - 10:14 #2
Post din kode, kan ikke hjælpe dig ud fra din forklaring.
Avatar billede the_party_dog Nybegynder
07. maj 2002 - 10:19 #3
hæng i 5 min, så skal jeg lige lave det lidt simpelt, så i kan se hvad jeg vil, hav lidt tålmodighed, tak....
Avatar billede the_party_dog Nybegynder
07. maj 2002 - 10:34 #4
int r;
int farve1;
int ptr;
time_t t;


srand((unsigned) time(&t);
for(r=0; r<1; r++);
  printf("%d\n", rand() % 6);
Her er r så den variable som jeg bruger til at lave en random tal med, og det virker os fint, den kommer med forskellige tal.

printf("Gæt første farve");
scanf("%s", &farve1);
her er det så at jeg vil have at jeg kan sammenligne r, den som tidligere blev generet tilfældigt, med det svar som user kommer med(farve1).

ptr = strcmp(r, farve1);
if (ptr == 0)
  {rigtig gættet
  }
else
  {forkert gættet
  }
Men det kan da godt være at jeg er helt forkert på den, så lad være med at nakke mig, jeg er lige begyndt på det her shit, så jeg mangler virklig hjælp....
Avatar billede jpk Nybegynder
07. maj 2002 - 10:39 #5
istedet for
printf("%d\n", rand() % 6);
skal du assigne værdien til en variabel!

int nRandom = rand() % 6;
Avatar billede the_party_dog Nybegynder
07. maj 2002 - 10:41 #6
okay, kommer der så et tal mellem 1 og 6, og det er så nRandom som jeg skal sammenligne med farve1?
Avatar billede chries Nybegynder
07. maj 2002 - 10:46 #7
det er her det går galt flere steder:

r er ikke tilfældig, men altid 1 !
..
r = rand()%6 + 1; (rand bliver 0-5, derfor +1 )
printf("%d\n", r);
..

du scanner streng op putter over i int... går ikke!

..
printf("Gæt første farve");
scanf("%i", &farve1);
..

og sammenligningen..

if (r == farve1)


nu burde du kunne indtaste et tal mellem 1 og 6 og få et svar
Avatar billede jpk Nybegynder
07. maj 2002 - 11:02 #8
hvis tallet skal være mellem 1 og 6 skal du gøre sådan:
int nRandom = (rand()%6)+1;

men hvorfor ikke bare bruge tallene fra 0-5?
Avatar billede the_party_dog Nybegynder
07. maj 2002 - 11:06 #9
YEAH!!! Det funker nu, altså det med at sammenligne gør, så skal jeg bare have det til at passe sammen med det andet lort jeg har fundet ud af! Drenge, ved I hvad? I er for geniale! Det var mest chries svar som hjalp mig, men skal jeg dele dem mellem jer?
Avatar billede jpk Nybegynder
07. maj 2002 - 11:07 #10
Du kan oversætte den farve brugeren taster ind ved fx:

int nColor=0;
if(strcmp("rød", farve1) == 0)
  nColor = 1;
else if(strcmp("gul", farve1) == 0)
  nColor = 2;
else ...


men det er da umiddelbart lettere at lade spilleren indtaste et tal, der svarer til farven...!
A la:

Tast et tal for at vælge farve:
1 = rød
2 = gul
...
Avatar billede chries Nybegynder
07. maj 2002 - 11:09 #11
modulo opratoren har højere precedens end +, paranteserne er unødvendige.

hvis du vil lade bruger indtaste en farve istedet (ingen tjeck på tavelser), kan du gøre noget ligende:

// TestMe8.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>

int main(int argc, char* argv[])
{
    srand( (unsigned)time( NULL ) );

    int random = rand()%6 + 1;
   
    char colors[6][40] = { "red", "white", "black", "blue", "green", "yellow" };
   
    bool end = false;
   
    char input[128];

    while( !end )
    {
        printf( "guess color: " );
        scanf( "%s", input );

        if( strcmp( colors[random], input ) == 0 )
        {
            end = true;
            printf( "correct\n");
        }
        else
        {
            printf( "not correct\n");
        }
    }

    return 0;
}

programmet kører indtil der gættes rigtig
Avatar billede the_party_dog Nybegynder
07. maj 2002 - 11:19 #12
lige et hurtigt spørgsmål, hvis jeg vil have den til at lave 4 forskellige tilfældige, f.eks at jeg gerne vil have at der er:

int f1
int f2
int f3
int f4

f1 = rand() & 6 + 1;

f2 = rand() & 6 + 1;

f3 = rand() & 6 + 1;

f4 = rand() & 6 + 1;

men de bliver alle sammen det samme tal, hvordan ændre jeg det? så de bliver foskellige?
Avatar billede chries Nybegynder
07. maj 2002 - 11:23 #13
det er % du skal bruge =)

f1 = rand() % 6 + 1;
Avatar billede jpk Nybegynder
07. maj 2002 - 11:24 #14
Er det en tastefejl at du har skrevet & istedet for %?
Avatar billede the_party_dog Nybegynder
07. maj 2002 - 11:31 #15
ja
Avatar billede the_party_dog Nybegynder
07. maj 2002 - 11:33 #16
men de 4 bliver altid den samme værdi, men jeg har os lige prøvet det chries skrev, men det virkede ik, for den kendte ikke de biblotekter, som han skrev til først, har både prøvet med "" og <>, men det er jo os en gammel compiler jeg har, og det er os kun ANSII C jeg leger med, kan det have noget at gøre med at det chries skrev ikke virkede?
Avatar billede chries Nybegynder
07. maj 2002 - 11:35 #17
dem her kan du slette:
#include "stdafx.h"
#include "iostream.h"
Avatar billede jpk Nybegynder
07. maj 2002 - 11:36 #18
Du har kaldt
srand((unsigned)time(NULL));
først, ikke?
Avatar billede the_party_dog Nybegynder
07. maj 2002 - 11:37 #19
har jeg prøvet, men den siger at den ikke kender bool udtrykket " undefined symbol 'bool'"
Avatar billede chries Nybegynder
07. maj 2002 - 11:39 #20
ok, min fejl, det er vist c++ =)

bool erstattes af int, false af 0 og true med 1
Avatar billede the_party_dog Nybegynder
07. maj 2002 - 11:39 #21
har skrevet alt det chries har skrevet, helt nøjatig af, for at se om det virkede. men det gør det ik, jeg er tilbage kl. 12.10, så jeg kan ikke svare jeg, men jeg håber I har lyst til at hjælpe videre når jeg kommer igen.... Tak fordi at I ofre jeres tid på mig, det er sku flinkt!
Avatar billede the_party_dog Nybegynder
07. maj 2002 - 11:42 #22
nu virker det, men jeg har lige et spørgsmål, men det kommer når jeg kommer tilbage! I 2 gutter er for seje til det her lort!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester