tris

Stato
Discussione chiusa ad ulteriori risposte.

kr1pn0$

Utente Silver
14 Ottobre 2008
69
5
0
70
ciao ragazzi
adesso sto svillupando in C un primitivo gioco a tetris :tunz:
crea il campo tramite printf() e controlla che la zona scritta sia vuota, se piena richiede la mossa....
non va in crash se inserite u numero maggiore,
ecco come si presenta il campo:
________________
|____|_____|____|
|____|_____|____|
|____|_____|____|

Note: devo finire in caso di vittoria...
Codice:
#include <stdio.h>

char campo[3][3];
int ris;
void presenta_campo();
void mossa();
void calcola();

int p11;
int p12;
int p21;
int p22;

main(){
       printf("Gioco tetris by kripnos\n\n");
       inizio:
              presenta_campo();
              mossa();
              goto inizio;
              getchar();
}
void presenta_campo(){
     printf("_0 ____1 __2 \n");
     printf("  _____________\n");
     printf("0 | %c | %c | %c |\n",campo[0][0],campo[1][0],campo[2][0]);
     printf("1 | %c | %c | %c |\n",campo[0][1],campo[1][1],campo[2][1]);
     printf("2 | %c | %c | %c |\n",campo[0][2],campo[1][2],campo[2][2]);
     printf("  _____________\n");
}
void mossa(){
     p1:
        printf("\nP1 ( X )Fai la tua mossa (coordinate esempio 0 2 ): ");
        scanf("%d %d",&p11,&p12);
        if(campo[p11][p12]!= 'O' && campo[p11][p12] != 'X'){                    
                             campo[p11][p12] = 'X';
        }
        else {
             printf("\n\n la mossa è già stata fatta...\n");
             goto p1;
        }
     p2:
        printf("\n P2 ( O ) fai la tua mossa : ");
        scanf("%d",&p21);
        scanf("%d",&p22);
        if(campo[p21][p22]!= 'O' && campo[p21][p22] != 'X'){                    
                          campo[p21][p22] = 'O';
                          goto p2;
     }
}
void calcola(){
     if(campo[0][0]== 'O' && campo[1][1]== 'O' && campo[2][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
     }
     if(campo[0][0]== 'X' && campo[1][1]== 'X' && campo[2][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
     }
     if(campo[0][0]== 'O' && campo[0][1]== 'O' && campo[0][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
                
     }
     if(campo[0][0]== 'X' && campo[0][1]== 'X' && campo[0][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                     
     }
     

}
 
RE: Tetris

Cioè, questo è un esercizio o un tuo programma? Perché nel secondo caso sta discussione va in C/C++/C# e non qui...
 
RE: Tetris

1° studiati il l'header <iomanip> e usa quello almeno per la grafica ascii... messo così fa paura...
2° questo _NON_ è tetris, ma tris, tetris è quello che i mattoncini cadono dall'alto e quando si forma una linea piena spariscono.
3°
Codice:
       inizio:
              presenta_campo();
              mossa();
              goto inizio;
              getchar();
GOTO? santo cielo! toglilo! XD

In generale il codice fa schifo, uso delle variabili globali, ordine 0, uso massiccio dei GOTO.... insomma ti consiglio di rifarlo in maniera decente....
Inoltre in void calcola(); hai inserito solo poche delle condizioni del gioco per cui uno dei giocatori vince....
 
RE: Tetris

opocaj ha detto:
Cioè, questo è un esercizio o un tuo programma? Perché nel secondo caso sta discussione va in C/C++/C# e non qui...

entrambi .......lo fatto io
ma è anche un buon esercizio per usare bene gli array.
@_619 _: lo so ma non mi sono concentrato sulla grafica comunque lo "migliorata"
ecco:
Codice:
#include <stdio.h>
// includo la libreria standart 
char campo[3][3];

int ris;
void presenta_campo();
void mossa();
int calcola();
void pulisci();

int p11;
int p12;
int p21;
int p22;
int co;

main(){
       inizio:
              printf("Gioco tetris by kripnos\n\n");
              presenta_campo();
              mossa();
              pulisci();
              calcola();
              if (co == 4){
                              getchar();       
                              return 0;
              }
              goto inizio;
              getchar();
}
void presenta_campo(){
     printf("\n_0 ____1 __2 \n");
     printf("  _____________\n");
     printf("0 | %c | %c | %c |\n",campo[0][0],campo[1][0],campo[2][0]);
     printf("1 | %c | %c | %c |\n",campo[0][1],campo[1][1],campo[2][1]);
     printf("2 | %c | %c | %c |\n",campo[0][2],campo[1][2],campo[2][2]);
     printf("  -------------\n");
}
void mossa(){
     p1:
        printf("\nP1 ( X )Fai la tua mossa (coordinate esempio 0 2 ): ");
        scanf("%d %d",&p11,&p12);
        if(campo[p11][p12]!= 'O' && campo[p11][p12] != 'X'){                    
                             campo[p11][p12] = 'X';
        }
        else {
             printf("\n\n la mossa è già stata fatta...\n");
             goto p1;
        }
     p2:
        printf("\n P2 ( O ) fai la tua mossa : ");
        scanf("%d",&p21);
        scanf("%d",&p22);
        if(campo[p21][p22]!= 'O' && campo[p21][p22] != 'X'){                    
                          campo[p21][p22] = 'O';
        }
        else {
             printf("\n\n la mossa è già stata fatta...\n");
             goto p2;
        }
}
int calcola(){
     if(campo[0][0]== 'O' && campo[1][1]== 'O' && campo[2][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!\n");
                      co = 4;  
     }
     if(campo[0][0]== 'X' && campo[1][1]== 'X' && campo[2][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!\n");
                      co = 4;   
     }
     if(campo[0][0]== 'O' && campo[0][1]== 'O' && campo[0][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!\n");
                      co = 4; 
     }
     if(campo[0][0]== 'X' && campo[0][1]== 'X' && campo[0][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!\n");
                      co = 4;  
     }
     if(campo[0][0]== 'O' && campo[1][0]== 'O' && campo[2][0]== 'O'){
                      printf("\n\n Player 1, hai vinto!!\n");
                      co = 4;   
     }
     if(campo[0][0]== 'X' && campo[1][0]== 'X' && campo[2][0]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                      co = 4;    
     }
     if(campo[2][0]== 'O' && campo[1][1]== 'O' && campo[0][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
                      co = 4; 
     }
     if(campo[2][0]== 'X' && campo[1][1]== 'X' && campo[0][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                      co = 4;    
     }
     // ###############################################################
     if(campo[2][0]== 'O' && campo[2][1]== 'O' && campo[2][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
                      co = 4;   
     }
     if(campo[2][0]== 'X' && campo[2][1]== 'X' && campo[2][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                     co = 4;   
     }
     // ---------------------------------------------------------
     if(campo[0][1]== 'O' && campo[1][1]== 'O' && campo[2][1]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
                      co = 4; 
                  
     }
     if(campo[0][1]== 'X' && campo[1][1]== 'X' && campo[2][1]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                      co = 4;    
     }
     // riga si separazione
     if(campo[1][0]== 'O' && campo[1][1]== 'O' && campo[2][1]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
                      co = 4; 
     }
     if(campo[1][0]== 'X' && campo[1][1]== 'X' && campo[2][1]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                      co = 4;    
     }
     // ################################################
     if(campo[0][2]== 'O' && campo[1][2]== 'O' && campo[2][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
                      co = 4; 
     }
     if(campo[0][2]== 'X' && campo[1][2]== 'X' && campo[2][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                      co = 4;         
     }
}
void pulisci(){
     system("CLS");
}
 
che senso avrebbe poi inserire una funzione che contiene solo una funzione.
Comunque dammi retta, studiare l'header iomanip... ti tornerà molto utile....e LEVA STI MALEDETTI GOTO!!! xDD
 
questo non è opera mia, ma lo posto lo stesso perchè si tratta di un capolavoro del perl offuscato:

Codice:
#!/usr/bin/perl -nl
#  1 2 3  <--  Scrivi una cifra da 1 a 9 e premi invio
#  4 5 6
#  7 8 9       X = giocatore       O = computer
sub t{grep{$_==($_[0]&$_)}84,273,73,146,292,7,56,448}sub c{$a+$b&pop}sub p{$h=-1
;for$o(1..7){$_=":"x9;$o%2||s/:::/$a&2**++$h?":X:":$b&2**$h?":O:":": :"/eg;print
}}sub f{map{for$}(0..8){return$b+=$}if!c($}=2**$})&&t$_+$}}}$b,$a;0while c$}=2**
int rand 9;$b+=$}}((t$a+=$_)||t$a|$b^511?f:511)^p&&exit if/[1-9]/&!c$_=2**($&-1)
 
Oromis92 ha detto:
questo non è opera mia, ma lo posto lo stesso perchè si tratta di un capolavoro del perl offuscato:

Codice:
#!/usr/bin/perl -nl
#  1 2 3  <--  Scrivi una cifra da 1 a 9 e premi invio
#  4 5 6
#  7 8 9       X = giocatore       O = computer
sub t{grep{$_==($_[0]&$_)}84,273,73,146,292,7,56,448}sub c{$a+$b&pop}sub p{$h=-1
;for$o(1..7){$_=":"x9;$o%2||s/:::/$a&2**++$h?":X:":$b&2**$h?":O:":": :"/eg;print
}}sub f{map{for$}(0..8){return$b+=$}if!c($}=2**$})&&t$_+$}}}$b,$a;0while c$}=2**
int rand 9;$b+=$}}((t$a+=$_)||t$a|$b^511?f:511)^p&&exit if/[1-9]/&!c$_=2**($&-1)

Quando vedo certe cose mi vengono le lacrime dalla commozione :*)
 
[ot]@opocaj
guarda questa pagina: http://www.perl.it/documenti/articoli/2006/10/soltanto-un-alt.html
sono codici offuscati e relativa spiegazione

esistono anche cose del tipo:
Codice:
#!/usr/bin/perl -w                                      # camel code
use strict;
 
                                           $_='ev
                                       al("seek\040D
           ATA,0,                  0;");foreach(1..3)
       {<DATA>;}my               @camel1hump;my$camel;
  my$Camel  ;while(             <DATA>){$_=sprintf("%-6
9s",$_);my@dromedary           1=split(//);if(defined($
_=<DATA>)){@camel1hum        p=split(//);}while(@dromeda
 ry1){my$camel1hump=0      ;my$CAMEL=3;if(defined($_=shif
        t(@dromedary1    ))&&/\S/){$camel1hump+=1<<$CAMEL;}
       $CAMEL--;if(d   efined($_=shift(@dromedary1))&&/\S/){
      $camel1hump+=1  <<$CAMEL;}$CAMEL--;if(defined($_=shift(
     @camel1hump))&&/\S/){$camel1hump+=1<<$CAMEL;}$CAMEL--;if(
     defined($_=shift(@camel1hump))&&/\S/){$camel1hump+=1<<$CAME
     L;;}$camel.=(split(//,"\040..m`{/J\047\134}L^7FX"))[$camel1h
      ump];}$camel.="\n";}@camel1hump=split(/\n/,$camel);foreach(@
      camel1hump){chomp;$Camel=$_;y/LJF7\173\175`\047/\061\062\063\
      064\065\066\067\070/;y/12345678/JL7F\175\173\047`/;$_=reverse;
       print"$_\040$Camel\n";}foreach(@camel1hump){chomp;$Camel=$_;y
        /LJF7\173\175`\047/12345678/;y/12345678/JL7F\175\173\0 47`/;
         $_=reverse;print"\040$_$Camel\n";}';;s/\s*//g;;eval;   eval
           ("seek\040DATA,0,0;");undef$/;$_=<DATA>;s/\s*//g;(   );;s
             ;^.*_;;;map{eval"print\"$_\"";}/.{4}/g; __DATA__   \124
               \1   50\145\040\165\163\145\040\157\1 46\040\1  41\0
                    40\143\141  \155\145\1 54\040\1   51\155\  141
                    \147\145\0  40\151\156 \040\141    \163\16 3\
                     157\143\   151\141\16  4\151\1     57\156
                     \040\167  \151\164\1   50\040\      120\1
                     45\162\   154\040\15    1\163\      040\14
                     1\040\1   64\162\1      41\144       \145\
                     155\14    1\162\       153\04        0\157
                      \146\     040\11     7\047\         122\1
                      45\15      1\154\1  54\171          \040
                      \046\         012\101\16            3\16
                      3\15           7\143\15             1\14
                      1\16            4\145\163           \054
                     \040            \111\156\14         3\056
                    \040\         125\163\145\14         4\040\
                    167\1        51\164\1  50\0         40\160\
                  145\162                              \155\151
                \163\163                                \151\1
              57\156\056
[/ot]
 
Appena finito il mio in PHP, circa 2 ore di lavoro..
Sicuramente ci saranno bug o imprecisioni, comunque è molto semplice.
PHP:
<?php
$table = '%s | %s | %s
<hr width="80px;" align="left" />
%s | %s | %s
<hr width="80px;" align="left" />
%s | %s | %s'; // Codice HTML iniziale del tris (%s = Simbolo)
function generate_space($len=3) {
	return str_repeat('&nbsp;',$len);
}
$default='X'; // Giocatore iniziale
if (@$_COOKIE['giocate'] and strpos($_COOKIE['giocate'],'<')) {
	die('Attack detected');
}
function turno() {
	global $default;
	if (!@$_COOKIE['turno']) {
		return $default;
	} else {
		return $_COOKIE['turno'];
	}
}
for ($i=0;$i<=9;$i++) {
	eval("\$default$i = generate_space();");
}
function assign_variables() {
	global $default1,$default2,$default3,$default4,$default5,$default6,$default7,$default8,$default9;
	if (@$_COOKIE['giocate']) {
		$cookie=explode('|',$_COOKIE['giocate']);
		$i = 1;
		foreach ($cookie as $curr) {
			$cur = explode('=',$curr);
			eval ("\$default".$cur[0]." = '".$cur[1]."'.generate_space(1);");
			$i++;
		}
		return true;
	} else {
		return false;
	}
}
assign_variables(); // Funzione che assegna i vari segni - eseguire qualsiasi operazione che rigaurdi i segni dopo questa funzione!
function win() {
	global $default1,$default2,$default3,$default4,$default5,$default6,$default7,$default8,$default9;
	if ($default1 == $default2 and $default2 == $default3 and $default1[0] != '&' and $default2[0] != '&' and $default3[0] != '&') {
		return $default1;
	} elseif ($default1 == $default4 and $default4 == $default7 and $default1[0] != '&' and $default4[0] != '&' and $default7[0] != '&') {
		return $default1;
	} elseif ($default2 == $default5 and $default5 == $default8 and $default2[0] != '&' and $default5[0] != '&' and $default8[0] != '&') {
		return $default2;
	} elseif ($default3 == $default6 and $default6 == $default9 and $default3[0] != '&' and $default6[0] != '&' and $default9[0] != '&') {
		return $default3;
	} elseif ($default4 == $default5 and $default5 == $default6 and $default4[0] != '&' and $default5[0] != '&' and $default6[0] != '&') {
		return $default4;
	} elseif ($default7 == $default8 and $default8 == $default9 and $default7[0] != '&' and $default8[0] != '&' and $default9[0] != '&') {
		return $default7;
	} elseif ($default1 == $default5 and $default5 == $default9 and $default1[0] != '&' and $default5[0] != '&' and $default9[0] != '&') {
		return $default1;
	} elseif ($default3 == $default5 and $default5 == $default7 and $default3[0] != '&' and $default5[0] != '&' and $default9[0] != '&') {
		return $default3;
	} else {
		return false;
	}
}
if (($s = win()) != '') {
	if (@$_GET['newgame'] and $_COOKIE) {
		setcookie('giocate',$_COOKIE['giocate'],time()-3600);
		setcookie('turno',$_COOKIE['turno'],time()-3600);
		echo 'Caricamento...<meta http-equiv="refresh" content="1; url='.$_SERVER['PHP_SELF'].'">';
		exit;
	}
	echo('Il giocatore "'.substr($s,0,1).'" ha vinto la partita! Ecco come &egrave; andata a finire:<br />');
	printf($table,$default1,$default2,$default3,$default4,$default5,$default6,$default7,$default8,$default9);
	echo('<br /><a href="?newgame=1">Gioca di nuovo!</a>');
	exit;
}
if (@$_COOKIE['giocate'] and count(explode('|',$_COOKIE['giocate'])) == 9) {
	if (@$_GET['newgame'] and $_COOKIE) {
		setcookie('giocate',$_COOKIE['giocate'],time()-3600);
		setcookie('turno',$_COOKIE['turno'],time()-3600);
		echo 'Caricamento...<meta http-equiv="refresh" content="1; url='.$_SERVER['PHP_SELF'].'">';
		exit;
	}
	die('Partita finita in parit&agrave;!<br /><a href="?newgame=1">Gioca di nuovo</a>');
}
if (($spunta=@$_GET['spunta']) != '' and @$_GET['giocatore'] == turno()) {
	$var=$spunta[1];
	eval ("\$check = \$default$var;");
	if ($check[0] != '&') {
		die('Stai utilizzando una posizione gi&agrave; utilizzata!');
	}
	$turno=(turno() == 'X') ? 'O' : 'X';
	setcookie('turno',$turno,time()+3600);
	$value=(@$_COOKIE['giocate']) ? $_COOKIE['giocate'] : '';
	if ($value) {
		$val = explode('|',$value);
		$val[] = $var.'='.$_GET['giocatore'];
		$ok = implode('|',$val);
		setcookie('giocate',$ok,time()+3600);
	} else {
		setcookie('giocate',$var.'='.$_GET['giocatore'],time()+3600);
	}
	echo 'E\' stato inserito il segno "'.$_GET['giocatore'].'" nella casella numero '.$var.'
        <br />Caricamento...<meta http-equiv="refresh" content="1; url='.$_SERVER['PHP_SELF'].'">';
	exit;
}
printf($table,$default1,$default2,$default3,$default4,$default5,$default6,$default7,$default8,$default9);
echo '<br />E\' il turno del giocatore che ha il simbolo "'.turno().'"';
echo '<br />';
for ($i=1;$i<=9;$i++) {
	eval ("\$current = \$default$i;");
	if ($current[0] == '&') {
		echo "<a href=\"?spunta=d$i&giocatore=".turno()."\">Metti il simbolo \"".turno()."\" nella casella numero $i</a><br />";
	}
}
?>
Edit: dimenticavo, purtroppo lo script è solo in modalità multigiocatore, cioè potete giocare solo con un vostro amico che sta affianco a voi.
Bye
 
Robertof ha detto:
Appena finito il mio in PHP, circa 2 ore di lavoro..
Sicuramente ci saranno bug o imprecisioni, comunque è molto semplice.
PHP:
<?php
$table = '%s | %s | %s
<hr width="80px;" align="left" />
%s | %s | %s
<hr width="80px;" align="left" />
%s | %s | %s'; // Codice HTML iniziale del tris (%s = Simbolo)
function generate_space($len=3) {
	return str_repeat('&nbsp;',$len);
}
$default='X'; // Giocatore iniziale
if (@$_COOKIE['giocate'] and strpos($_COOKIE['giocate'],'<')) {
	die('Attack detected');
}
function turno() {
	global $default;
	if (!@$_COOKIE['turno']) {
		return $default;
	} else {
		return $_COOKIE['turno'];
	}
}
for ($i=0;$i<=9;$i++) {
	eval("\$default$i = generate_space();");
}
function assign_variables() {
	global $default1,$default2,$default3,$default4,$default5,$default6,$default7,$default8,$default9;
	if (@$_COOKIE['giocate']) {
		$cookie=explode('|',$_COOKIE['giocate']);
		$i = 1;
		foreach ($cookie as $curr) {
			$cur = explode('=',$curr);
			eval ("\$default".$cur[0]." = '".$cur[1]."'.generate_space(1);");
			$i++;
		}
		return true;
	} else {
		return false;
	}
}
assign_variables(); // Funzione che assegna i vari segni - eseguire qualsiasi operazione che rigaurdi i segni dopo questa funzione!
function win() {
	global $default1,$default2,$default3,$default4,$default5,$default6,$default7,$default8,$default9;
	if ($default1 == $default2 and $default2 == $default3 and $default1[0] != '&' and $default2[0] != '&' and $default3[0] != '&') {
		return $default1;
	} elseif ($default1 == $default4 and $default4 == $default7 and $default1[0] != '&' and $default4[0] != '&' and $default7[0] != '&') {
		return $default1;
	} elseif ($default2 == $default5 and $default5 == $default8 and $default2[0] != '&' and $default5[0] != '&' and $default8[0] != '&') {
		return $default2;
	} elseif ($default3 == $default6 and $default6 == $default9 and $default3[0] != '&' and $default6[0] != '&' and $default9[0] != '&') {
		return $default3;
	} elseif ($default4 == $default5 and $default5 == $default6 and $default4[0] != '&' and $default5[0] != '&' and $default6[0] != '&') {
		return $default4;
	} elseif ($default7 == $default8 and $default8 == $default9 and $default7[0] != '&' and $default8[0] != '&' and $default9[0] != '&') {
		return $default7;
	} elseif ($default1 == $default5 and $default5 == $default9 and $default1[0] != '&' and $default5[0] != '&' and $default9[0] != '&') {
		return $default1;
	} elseif ($default3 == $default5 and $default5 == $default7 and $default3[0] != '&' and $default5[0] != '&' and $default9[0] != '&') {
		return $default3;
	} else {
		return false;
	}
}
if (($s = win()) != '') {
	if (@$_GET['newgame'] and $_COOKIE) {
		setcookie('giocate',$_COOKIE['giocate'],time()-3600);
		setcookie('turno',$_COOKIE['turno'],time()-3600);
		echo 'Caricamento...<meta http-equiv="refresh" content="1; url='.$_SERVER['PHP_SELF'].'">';
		exit;
	}
	echo('Il giocatore "'.substr($s,0,1).'" ha vinto la partita! Ecco come &egrave; andata a finire:<br />');
	printf($table,$default1,$default2,$default3,$default4,$default5,$default6,$default7,$default8,$default9);
	echo('<br /><a href="?newgame=1">Gioca di nuovo!</a>');
	exit;
}
if (@$_COOKIE['giocate'] and count(explode('|',$_COOKIE['giocate'])) == 9) {
	if (@$_GET['newgame'] and $_COOKIE) {
		setcookie('giocate',$_COOKIE['giocate'],time()-3600);
		setcookie('turno',$_COOKIE['turno'],time()-3600);
		echo 'Caricamento...<meta http-equiv="refresh" content="1; url='.$_SERVER['PHP_SELF'].'">';
		exit;
	}
	die('Partita finita in parit&agrave;!<br /><a href="?newgame=1">Gioca di nuovo</a>');
}
if (($spunta=@$_GET['spunta']) != '' and @$_GET['giocatore'] == turno()) {
	$var=$spunta[1];
	eval ("\$check = \$default$var;");
	if ($check[0] != '&') {
		die('Stai utilizzando una posizione gi&agrave; utilizzata!');
	}
	$turno=(turno() == 'X') ? 'O' : 'X';
	setcookie('turno',$turno,time()+3600);
	$value=(@$_COOKIE['giocate']) ? $_COOKIE['giocate'] : '';
	if ($value) {
		$val = explode('|',$value);
		$val[] = $var.'='.$_GET['giocatore'];
		$ok = implode('|',$val);
		setcookie('giocate',$ok,time()+3600);
	} else {
		setcookie('giocate',$var.'='.$_GET['giocatore'],time()+3600);
	}
	echo 'E\' stato inserito il segno "'.$_GET['giocatore'].'" nella casella numero '.$var.'
        <br />Caricamento...<meta http-equiv="refresh" content="1; url='.$_SERVER['PHP_SELF'].'">';
	exit;
}
printf($table,$default1,$default2,$default3,$default4,$default5,$default6,$default7,$default8,$default9);
echo '<br />E\' il turno del giocatore che ha il simbolo "'.turno().'"';
echo '<br />';
for ($i=1;$i<=9;$i++) {
	eval ("\$current = \$default$i;");
	if ($current[0] == '&') {
		echo "<a href=\"?spunta=d$i&giocatore=".turno()."\">Metti il simbolo \"".turno()."\" nella casella numero $i</a><br />";
	}
}
?>
Edit: dimenticavo, purtroppo lo script è solo in modalità multigiocatore, cioè potete giocare solo con un vostro amico che sta affianco a voi.
Bye

io invece sto creando un alias del computer....
ma è stupido come una gallina............:asd:
( mette croci a caso dove è vuoto :lol: )

_619_ ha detto:
1° studiati il l'header <iomanip> e usa quello almeno per la grafica ascii... messo così fa paura...
2° questo _NON_ è tetris, ma tris, tetris è quello che i mattoncini cadono dall'alto e quando si forma una linea piena spariscono.
3°
Codice:
       inizio:
              presenta_campo();
              mossa();
              goto inizio;
              getchar();
GOTO? santo cielo! toglilo! XD

In generale il codice fa schifo, uso delle variabili globali, ordine 0, uso massiccio dei GOTO.... insomma ti consiglio di rifarlo in maniera decente....
Inoltre in void calcola(); hai inserito solo poche delle condizioni del gioco per cui uno dei giocatori vince....
Goto no!!!!!!!! :asd:
su progetti piccoli non mi importa del codice spaghetto:asd: :D
come potrei sostituirlo oppure ???

per iomanip
si può usare per il C ???
mi sembrava solo per C++
 
Lol scusa, io do sempre per scontato che la gente programmi in c++ xDD

Per il resto, finchè userai goto ti odierò a morte sappilo. Ho avuto bruttissime esperienze con quella fottuta istruzione.
 
_619_ ha detto:
Lol scusa, io do sempre per scontato che la gente programmi in c++ xDD

Per il resto, finchè userai goto ti odierò a morte sappilo. Ho avuto bruttissime esperienze con quella fottuta istruzione.

anche io lo odio ma come faccio a non usarlo....
P.S: JMP non va !!!! :asd:
 
_619_ ha detto:
Lol scusa, io do sempre per scontato che la gente programmi in c++ xDD

Per il resto, finchè userai goto ti odierò a morte sappilo. Ho avuto bruttissime esperienze con quella fottuta istruzione.
ecco senza goto :asd:
Codice:
#include <stdio.h>
// includo la libreria standar 
char campo[3][3];

int ris;
void presenta_campo();
void mossa();
int calcola();
void pulisci();

int p11;
int p12;
int p21;
int p22;
int co;

main(){
       while(co != 4){
              printf("Gioco tetris by kripnos\n\n");
              presenta_campo();
              mossa();
              pulisci();
              calcola();
              getchar();
       }
       getchar();
       return 0;
}
void presenta_campo(){
     printf("\n_0 ____1 __2 \n");
     printf("  _____________\n");
     printf("0 | %c | %c | %c |\n",campo[0][0],campo[1][0],campo[2][0]);
     printf("1 | %c | %c | %c |\n",campo[0][1],campo[1][1],campo[2][1]);
     printf("2 | %c | %c | %c |\n",campo[0][2],campo[1][2],campo[2][2]);
     printf("  -------------\n");
}
void mossa(){
     p1:
        printf("\nP1 ( X )Fai la tua mossa (coordinate esempio 0 2 ): ");
        scanf("%d %d",&p11,&p12);
        if(campo[p11][p12]!= 'O' && campo[p11][p12] != 'X'){                    
                             campo[p11][p12] = 'X';
        }
        else {
             printf("\n\n la mossa è già stata fatta...\n");
             goto p1;
        }
     p2:
        printf("\n P2 ( O ) fai la tua mossa : ");
        scanf("%d",&p21);
        scanf("%d",&p22);
        if(campo[p21][p22]!= 'O' && campo[p21][p22] != 'X'){                    
                          campo[p21][p22] = 'O';
        }
        else {
             printf("\n\n la mossa è già stata fatta...\n");
             goto p2;
        }
}
int calcola(){
     if(campo[0][0]== 'O' && campo[1][1]== 'O' && campo[2][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!\n");
                      co = 4;  
     }
     if(campo[0][0]== 'X' && campo[1][1]== 'X' && campo[2][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!\n");
                      co = 4;   
     }
     if(campo[0][0]== 'O' && campo[0][1]== 'O' && campo[0][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!\n");
                      co = 4; 
     }
     if(campo[0][0]== 'X' && campo[0][1]== 'X' && campo[0][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!\n");
                      co = 4;  
     }
     if(campo[0][0]== 'O' && campo[1][0]== 'O' && campo[2][0]== 'O'){
                      printf("\n\n Player 1, hai vinto!!\n");
                      co = 4;   
     }
     if(campo[0][0]== 'X' && campo[1][0]== 'X' && campo[2][0]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                      co = 4;    
     }
     if(campo[2][0]== 'O' && campo[1][1]== 'O' && campo[0][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
                      co = 4; 
     }
     if(campo[2][0]== 'X' && campo[1][1]== 'X' && campo[0][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                      co = 4;    
     }
     // ###############################################################
     if(campo[2][0]== 'O' && campo[2][1]== 'O' && campo[2][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
                      co = 4;   
     }
     if(campo[2][0]== 'X' && campo[2][1]== 'X' && campo[2][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                     co = 4;   
     }
     // ---------------------------------------------------------
     if(campo[0][1]== 'O' && campo[1][1]== 'O' && campo[2][1]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
                      co = 4; 
                  
     }
     if(campo[0][1]== 'X' && campo[1][1]== 'X' && campo[2][1]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                      co = 4;    
     }
     // riga si separazione
     if(campo[1][0]== 'O' && campo[1][1]== 'O' && campo[2][1]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
                      co = 4; 
     }
     if(campo[1][0]== 'X' && campo[1][1]== 'X' && campo[2][1]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                      co = 4;    
     }
     // ################################################
     if(campo[0][2]== 'O' && campo[1][2]== 'O' && campo[2][2]== 'O'){
                      printf("\n\n Player 1, hai vinto!!");
                      co = 4; 
     }
     if(campo[0][2]== 'X' && campo[1][2]== 'X' && campo[2][2]== 'X'){
                      printf("\n\n Player 2, hai vinto!!");
                      co = 4;         
     }
}
void pulisci(){
     system("CLS");
}


P.S: in alcune funzioni non ho tolto goto
 
Scusa ma nel secondo caso fai una variabile di stato "int statogioco=1; //player uno" che alla fine di ogni ciclo controlli con un if e se è 1 gioca il plaer uno, se è due gioca il due.
Ora non ho tempo, dopo te lo implemento.

ecco qua la tua funzione mossa senza goto:
Codice:
void mossa() {
    int gamestate = 1;
    while ( 1 ){
        if ( gamestate == 1 ){
            printf("\nP1 ( X )Fai la tua mossa (coordinate esempio 0 2 ): ");
            scanf("%d %d",&p11,&p12);
            
            if(campo[p11][p12]!= 'O' && campo[p11][p12] != 'X'){
                campo[p11][p12] = 'X';
                gamestate=2;
                continue;
            } else {
                printf("\n\n la mossa è già stata fatta...\n");
                continue;
            }
        }
        
        else if( gamestate == 2 ) {
            printf("\n P2 ( O ) fai la tua mossa : ");
            scanf("%d",&p21);
            scanf("%d",&p22);
            
            if(campo[p21][p22]!= 'O' && campo[p21][p22] != 'X'){
                campo[p21][p22] = 'O';
                gamestate = 3;
                continue;
            } else {
                printf("\n\n la mossa è già stata fatta...\n");
                continue;
            }
        }
        
        else
            break;
    }
}

Già che ci sei dai un'occhio anche all'identazione e allo stile che per riordinare il tuo codice ci ho messo 20 minuti -.-
 
_619_ ha detto:
Scusa ma nel secondo caso fai una variabile di stato "int statogioco=1; //player uno" che alla fine di ogni ciclo controlli con un if e se è 1 gioca il plaer uno, se è due gioca il due.
Ora non ho tempo, dopo te lo implemento.

ecco qua la tua funzione mossa senza goto:
Codice:
void mossa() {
    int gamestate = 1;
    while ( 1 ){
        if ( gamestate == 1 ){
            printf("\nP1 ( X )Fai la tua mossa (coordinate esempio 0 2 ): ");
            scanf("%d %d",&p11,&p12);
            
            if(campo[p11][p12]!= 'O' && campo[p11][p12] != 'X'){
                campo[p11][p12] = 'X';
                gamestate=2;
                continue;
            } else {
                printf("\n\n la mossa è già stata fatta...\n");
                continue;
            }
        }
        
        else if( gamestate == 2 ) {
            printf("\n P2 ( O ) fai la tua mossa : ");
            scanf("%d",&p21);
            scanf("%d",&p22);
            
            if(campo[p21][p22]!= 'O' && campo[p21][p22] != 'X'){
                campo[p21][p22] = 'O';
                gamestate = 3;
                continue;
            } else {
                printf("\n\n la mossa è già stata fatta...\n");
                continue;
            }
        }
        
        else
            break;
    }
}

Già che ci sei dai un'occhio anche all'identazione e allo stile che per riordinare il tuo codice ci ho messo 20 minuti -.-



si scusa ma studio da circa 7-8 giorni il C
non sono bavo bravo.....

comunque mi sto impegnando
( per adesso sono a srand() e rand() ...)
 
Don't worry, comunque ricorda di usare la testa il più possibile, e di usare i GOTO il MENO possibile xD
Voi giovanotti che avete la fortuna di poter programmare strutturato, sfuttatela xD
 
Stato
Discussione chiusa ad ulteriori risposte.