martedì 28 ottobre 2008

Primi Esercizi in Java

Dunque, questo pomeriggio abbiamo iniziato ad usare il linguaggio Java.

Qui sotto Riporto il lavoro svolto quest'oggi.

public class Persona {
private int eta;
private String nome;
private char sesso;
private String email;
private String telefono;
public Persona(int e, String n, char s, String em, String t){
eta=e;
nome=n;
sesso=s;
email=em;
telefono=t;
}
/*seguono i metodi getters*/
public String getNome(){
return nome;
}
public char getSesso(){
return sesso;
}
public int getEta(){
return eta;
}
public String getEmail(){
return email;
}
public String getTelefono(){
return telefono;
}
/*seguono i metodi setters*/
public void setEta(int e){
eta=e;
}
public void setEmail(String em){
email=em;
}
public void setTelefono(String t){
telefono=t;
}
}

Questo è per Definire una classe.

public class TestaPersona {
public static void main(String args[]){ /*args stà per argomenti*/
Persona p1;
Persona p2;
Persona p3;
p1=new Persona(18,"Mario",'m',"mario@libero.it","+390752323");
p2=new Persona(24,"Luisa",'f',"luisa@virgilio.it","+390752121");
p3=new Persona(20,"Caio",'m',"caio@libero.it","+390652323");
}
}

Qui invece definiamo 3 oggetti.


Aggiornerò a lavoro ultimato!

giovedì 23 ottobre 2008

Il gioco delle 7 stanghette (Ore 1:08)

Come da titolo sono le una inoltrate, e finalmente insieme a Marco Perrotta, siamo riusciti a finire questo dannato gioco! Ci è voluto un pomeriggio intero, però cel'abbiamo fatta!

Alcune immagini del programma in funzione e poi la sorgente!


La prima mossa mia e del computer.


La partita si fa accesa!


Vittoria mia nei confronti del computer.

Il File Sorgente, onde evitare che qualche simpaticone lo copi, verrà postato domattina stessa nell'aula Multimedia 3 di informatica.

A Domani Prof! Buonanotte!

Venerdì 24/10/2008 H 7.45

Come ieri, anche oggi non sto molto bene, pertanto allego a questo post il file sorgente del gioco.

Prof mi raccomando col voto!




#include
#include
#include

#define NUMRIGHE 4

int limiti[NUMRIGHE] = {7,5,3,1}; //Limiti per le righe
int rows[NUMRIGHE][7]; // Tavola di gioco
int fill[NUMRIGHE]; // Livelli di riempimento delle righe
char symbol[3]= {'|','+','-'}; // Simboli del gioco

//Disegna la tavola
void repaint()
{
system ("cls");

int i;

printf("Il gioco delle sette stanghette\n\n");

for(i=0;i<7;i++)
printf("%c",symbol[rows[0][i]]);

printf("\n ");

for(i=0; i<5; i++)
printf("%c",symbol[rows[1][i]]);

printf("\n ");

for(i=0; i<3; i++)
printf("%c",symbol[rows[2][i]]);

printf("\n ");

for(i=0; i<1; i++)
printf("%c",symbol[rows[3][i]]);

printf("\n\n");
}


// Azzera i dati di gioco
void inizializza()
{
int i, j;

for(i=0; i<7; i++)
{
if (i< NUMRIGHE)
fill[i]=0;

for(j=0; j< NUMRIGHE; j++)
rows[j][i]=0; //todo: presente lavoro superfluo
}
}


// Controlla che l'imput passatogli sia giusto
int controllaInput(int rigan, int cellen, int sender)
{
if (rigan==0 && cellen==0)
return 0;

if (rigan>NUMRIGHE || rigan<1)
{
if (sender == 1)
printf("Numero di riga errato.");
return 0;
}

if ( fill[rigan-1]+cellen > limiti[rigan-1] )
{
if (sender == 1)
printf("Impossibile prendere il numero di celle richiesto.");
return 0;
}

return 1;
}

// Valorizza il numero di celle richieste nella riga specificata
// (richiede un input verificato)
void prendiCelle(int rigan, int cellen, int value)
{
int i=-1;
rigan--;

fill[rigan] += cellen;

while (cellen>0 && ++i< limiti[rigan])
if (rows[rigan][i]==0)
{
rows[rigan][i]=value;
cellen--;
}
}

// Controlla se la partita è finita o può continuare
int checkMatch()
{
// controllo se è rimasta una cella libera
if (celleRimaste()<=1)
return 1;

return 0; // Parita non finita
}

// ritorna il numero di celle rimaste
int celleRimaste()
{
return limiti[0]+limiti[1]+limiti[2]+limiti[3]-fill[0]-fill[1]-fill[2]-fill[3];
}

// Genera un numero casuale compreso tra 1 e 'num'
int getRndUpTo(int num)
{
return (int) 1 + (num * (rand()/(RAND_MAX+1.0)));
}

// Motore del giocatore AI (pseudo AI)
void execAImove()
{
//todo: implementare IA per bene (vedi programmazione dinamica)

int i=0, CelleDaPrendere = celleRimaste()-1;

// Cerco di prendere tutte le celle rimaste tranne una
for(i=0;i< NUMRIGHE;i++)
if (controllaInput(i,CelleDaPrendere,2)==1)
{
prendiCelle(i,CelleDaPrendere,2);
return;
}


// Sennò cicla random finché non trova una soluzione accettabile
int rigascelta = getRndUpTo(NUMRIGHE);
int ncellescelto = getRndUpTo(limiti[rigascelta]);

while (controllaInput(rigascelta,ncellescelto,2)==0)
{
rigascelta = getRndUpTo(NUMRIGHE);
ncellescelto = getRndUpTo(limiti[rigascelta]);
}

// Prendo le celle scelte
prendiCelle(rigascelta,ncellescelto,2);
}


main()
{
// inizializzo la 'scacchiera'
inizializza();

int rigan, cellen, togglePlayer=1; // inizia il player

// Cicla finché il match non è terminato
while (checkMatch()==0)
{
if (togglePlayer==1)
{
// ridisegno la tavola ogni volta che ha giocato IA o all'inizio
repaint();

//azzero le variabili
rigan=0, cellen=0;

// chiedo l'input al player
while(controllaInput(rigan,cellen,1)==0)
{
printf("\nImmetti riga (1-4) e num. di stanghette che vuoi prendere (separati da virgola):");
scanf("%d,%d",&rigan,&cellen);
}

// prendo il numero di celle scelto dal player
prendiCelle(rigan,cellen,1);

togglePlayer = 2;
}
else
{
// eseguo la mossa AI
execAImove();

togglePlayer = 1;
}
}

repaint();

// finalizzo
printf("\n\nPartita terminata. ");
if (togglePlayer==2)
printf("Hai vinto!\n\n");
else
printf("Hai perso...\n\n");

// possibile ciclare per ripetere il gioco
system("PAUSE");
}