#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <stdio.h>
#include <cgi.h>
#define HTML_HEAD "<html>\n<head><title>Memory Game CGI</title></head>\n<body>"
#define HTML_FOOT "<hr>Marta Nowak</body></html>"
#define HTML_SUBMIT "<input type=submit value='Strzelaj'>"
s_cgi *cgi;
int my_itoa(int val, char* buf)
{
const unsigned int radix = 10;
char* p;
unsigned int a; //every digit
int len;
char* b; //start of the digit char
char temp;
unsigned int u;
p = buf;
if (val < 0)
{
*p++ = '-';
val = 0 - val;
}
u = (unsigned int)val;
b = p;
do
{
a = u % radix;
u /= radix;
*p++ = a + '0';
} while (u > 0);
len = (int)(p - buf);
*p-- = 0;
//swap
do
{
temp = *p;
*p = *b;
*b = temp;
--p;
++b;
} while (b < p);
return len;
}
void formularz(char* wyb1, char* wyb2, char plansza[], char* zakonczone) {
printf("<form method='GET' action=''>WYBOR 1: <input type='text' size='110' name='wyb1' value='%s'></br>WYBOR 2: <input type='text' size='110' name='wyb2' value='%s'><input type='hidden' name='plansza' value='%s'><input type='hidden' name='zakonczone' value='%s'>", wyb1,wyb2,plansza,zakonczone);
printf(HTML_SUBMIT);
printf("</form>");
}
void formularz_wyp(char* wyb1, char* wyb2, char* plansza, char* zakonczone) {
printf("<form method='GET' action=''>WYBOR 1: <input type='text' size='110' name='wyb1' value='%s'></br>WYBOR 2: <input type='text' size='110' name='wyb2' value='%s'><input type='hidden' name='plansza' value='%s'><input type='hidden' name='zakonczone' value='%s'>", wyb1,wyb2,plansza,zakonczone);
printf(HTML_SUBMIT);
printf("</form>");
}
int sprawdz_czy_puste(int num, int tablica[])
{
if(tablica[num]==-1)
return 1;
else
return 0;
}
int wypelnij_plansze(char* plan) // funkcja losuje nam obrazek i wstawia go do naszej tablicy z polami
{
}
void sprawdz_pare(int a, int b, int tablica[], int complete[])
{
if(a>10 || b>10) return;
if(tablica[a-1]==tablica[b-1])
{complete[a]=1;
complete[b]=1;
}
else return;
}
int main(void)
{
int plansza[10];
int complete[10];
cgi=cgiInit();
cgiHeader();
char* wybor1 = cgiGetValue(cgi,"wyb1");
char* wybor2 = cgiGetValue(cgi,"wyb2");
char* plan = cgiGetValue(cgi,"plansza");
char* zakonczone = cgiGetValue(cgi,"zakonczone");
char full[100]="\0";
char cyfra[3];
if(wybor1==NULL)
{
wybor1="";
int i;
for(i=0; i<10; i++)
{
plansza[i]=-1;
}
}
if(wybor2==NULL)
{
wybor2="";
}
srand( time( NULL ) );
if(plan==NULL)
{
printf("PRZEPROWADZAM LOSOWANIE KART \n");
plan="";
int karty[]={1,1,2,2,3,3,4,4,5,5};
int los=rand()%10;
int ok=1;
int i;
for(i=0; i<10; i++)
{
ok=0;
do
{
los=rand()%10;
}while(sprawdz_czy_puste(los,plansza)!=1);
plansza[los]=karty[i];
}
int x;
for(x=0; x<10; x++)
{
my_itoa(plansza[x],cyfra);
strcat(full,cyfra);
if(x!=9) strcat(full,"-");
}int j;
printf("WYLOSOWALEM\n");
for(j=0;j<10; j++)
{
printf("%d",plansza[j]);
printf("\n");
}
printf(HTML_HEAD);
formularz(wybor1,wybor2,full,zakonczone);
}
else
{
printf("DOSTALEM: %s\n",plan);
char delims[] = "-";
char *result = NULL;
result = strtok( plan, delims );
int k=0;
while( result != NULL ) {
plansza[k]=atoi(result);
result = strtok( NULL, delims );
}
int x;
for(x=0; x<10; x++)
{
my_itoa(plansza[x],cyfra);
strcat(full,cyfra);
if(x!=9) strcat(full,"-");
}
int j;
for(j=0;j<10; j++)
{
printf("%d",plansza[j]);
printf("\n");
}
printf(HTML_HEAD);
printf("TO ZAMIERZAM WYSLAC GETEM: %s",full);
formularz(wybor1,wybor2,full,zakonczone);
}
/*
if(wybor1!="" && wybor2!="")
{
sprawdz_pare(atoi(wybor1), atoi(wybor2));
printf("CHECKING");
}
int i;
for(i=0; i<10; i++)
{
printf("%d: %d",i,complete[i]);
printf("\n");
}
*/
printf(HTML_FOOT);
return 0;
}
Witam serdecznie, piszę taką o to grę w nieszczesnym Cgi, w czystym C i pojawia się pewien problem otóż za każdym razem aby zapamietac raz wylosowane dane musze je sobie przesłac postem czy tam Getem sparsowac stringa i powstawiac do tablicy i tutaj dzieje sie dziwna rzecz wynik poza petla
while( result != NULL ) {
plansza[k]=atoi(result);
// TU JEST OK PLANSZA[k] zawiera odpowiednie dane
result = strtok( NULL, delims );
}
int x;
for(x=0; x<10; x++)
{
my_itoa(plansza[x],cyfra); // TO TU JUŻ JEST ZLE DANYCH NIE MA ;(
strcat(full,cyfra);
if(x!=9) strcat(full,"-");
}
wartosci z tablicy plansza nagle cudownie znikaja i pozostaja smieci niezaincjowanej tablicy.... Co jest w czym problem ??