Ciao a tutti,
il mio prof di informatica mi ha assegnato un programma (il gioco snake) da programmare.
Ora, il corpo del programma c'è, solo che quando compilo mi risultano 3 errori:
1 In function `main':
2 undefined reference to `WinMain'
3 [Error] ld returned 1 exit status.
Mi sono resa conto che ci sono argomenti simili sul forum, ma ad essere sincera non ho capito molto bene come correggere gli errori che ho commesso nella stesura del programma.
Grazie in anticipo per l'aiuto e scusatemi se ho sbagliato qualcosa nel porre la domanda.
Questo è il programma:
/*
SNAKE
*/
#include <stdio.h>//libreria che contiene funzioni di imput e di output
#include <stdlib.h>//libreria che contiene le funzioni system()
#include <conio.h>//libreria utilizzata dai compilatori per MS-DOS per creare interfacce testuali
#include <windows.h> //è libreria che contiene le dichiarazioni in C/C++ per le funzioni delle Windows API(l'insieme delle interfacce di
programmazione disponibili nei sistemi operativi Windows
#include <time.h>// libreria utilizzata per convertire tra vari formati di data e ora.
void gotoxy(short x, short y)//funzione che non restituisce output
{
COORD pos = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
void print(int LengthSnake);
int T,i;
int direzionex = -1;
int direzioney = 0;
int cambiodirX = 0;
int cambiodirY = 0;
char termina ;
int Len = 8;
int punti = 0;
int cibo = 0;
int ciboX;
int ciboY;
int record = 0;
int scelta;
int fp;
int snake[200][2];
/*
_______
testa|0 |
|1 |
|2 |
|3 |
|... |
coda |Len-1|
la seconda dimensione di snake[][]
ha 2 celle perchè
la prima indica la posizione X
mentre la seconda la posizione Y
*/
// PULISCE LA PARTE IN BASSO DELLO SCHERMO DESTINATO A SCRIVERE I PUNTI..
void clean(int*x,int*y);
{
int i;
gotoxy(1, 23);
for(i=1; i<=160; i++)
putch(' ');
}
int funzione(int n);
{
// DICHIARAZIONI DELLE VARIABILI
FILE *fp;
fp = fopen("record", "r");
if(fp != NULL)
{
fread(&record, 1, 1, fp);
fclose(fp);
}
// SCELTA DELLA DIFFICOLTA'
system("CLS");
system ("COLOR 0f");//primo carattere sfondo, secondo testo
gotoxy(30,3); puts("SNAKE BY PHAM (alias pnb2frank)");
gotoxy(30,5); printf("IL TUO RECORD E': %d", record);
gotoxy(30,7); puts("DIFFICOLTA'");
gotoxy(30,9); puts("1) Super Facile");
gotoxy(30,10); puts("2) Facile");
gotoxy(30,11); puts("3) Medio");
gotoxy(30,12); puts("4) Difficile");
gotoxy(30,13); puts("5) Estremo");
gotoxy(32,15); puts("Scelta: ");
do scelta = getch(); while(scelta < 49 || scelta > 53);
switch(scelta)
{
case 49:
T=250;
break;
case 50:
T=125;
break;
case 51:
T=70;
break;
case 52:
T=40;
break;
case 53:
T=10;
break;
}
system("CLS");}
// INIZIALIZZAZIONE SNAKE
for(i=0; i<200; i++)
{
snake[i][0] = 1;
snake[i][1] = 1;
}
snake[0][0] = 40;
snake[0][1] = 11;
// DISEGNO QUADRO DEL GIOCO
gotoxy(1, 22);
system ("CLS");//pulisce lo schermo clear screen
system ("COLOR 0c");//primo carattere sfondo, secondo testo
for(i=1; i<=80; i++)
putchar('=');
// SCRIVO I PUNTI
write();
gotoxy(1, 23);
system ("CLS");//pulisce lo schermo clear screen
system ("COLOR 0f");//primo carattere sfondo, secondo testo
printf("PUNTI = %d \t RECORD = %d \n", punti, record);
printf("Premi P per mettere in pausa, oppure e per ritornare al menu.");
scanf("%c",&termina);
// RANDOMIZZO PER IL CIBO
srand(time(NULL));
//__________________CICLO GENERALE, SI ESCE CON ESC____________________
while(termina==0)
{
Sleep(T); // VELOCITA' (SCELTO DALL'UTENTE)
// GENERO E DISEGNO IL CIBO
if(cibo==0)
{
rigenera:
ciboX = rand() % 80 + 1;
ciboY = rand() % 21 + 1;
for(i=0; i<Len; i++)
if(snake[i][0] == ciboX && snake[i][1] == ciboY)
goto rigenera;
system ("CLS");//pulisce lo schermo clear screen
system ("COLOR 0b");//primo carattere sfondo, secondo testo textcolor(BROWN);
gotoxy(ciboX, ciboY);
putchar('');
cibo=1;
}
// GESTIONE DIREZIONE DEL SERPENTE
if(kbhit())
{
switch(getch())
{
case 'w':
case 'W':
cambiodirX = 0;
cambiodirY = -1;
break;
case 'a':
case 'A':
cambiodirX = -1;
cambiodirY = 0;
break;
case 's':
case 'S':
cambiodirX = 0;
cambiodirY = 1;
break;
case 'd':
case 'D':
cambiodirX = 1;
cambiodirY = 0;
break;
case 'p':
case 'P':
system ("CLS");//pulisce lo schermo clear screen
system ("COLOR 0f");//primo carattere sfondo, secondo testo
gotoxy(1, 23);
system("PAUSE");
system ("CLS");//pulisce lo schermo clear screen
system ("COLOR 0f");//primo carattere sfondo, secondo testo
break;
case 27:
termina = 1;
}
// CONTROLLO SE IL CAMBIO DELLA DIREZIONE E' NEL SENSO OPPOSTO DELL'ATTUALE DIREZIONE
// SE SI, NON CAMBIA DIREZIONE..
if((cambiodirX) != -(direzionex) && (cambiodirY) != -(direzioney))
{
direzionex = cambiodirX;
direzioney = cambiodirY;
}
}
// SHIFT DEL SERPENTE
for(i=Len-1; i>0; i--)
{
snake[i][0]=snake[i-1][0];
snake[i][1]=snake[i-1][1];
}
// SPOSTAMENTO DELLA TESTA DEL SERPENTE
// controlla se si trova nei limiti dello schermo
if(snake[0][0] + direzionex == 81)
snake[0][0] = 1;
else if(snake[0][0] + direzionex == 0)
snake[0][0] = 80;
else if(snake[0][1] + direzioney == 22)
snake[0][1] = 1;
else if(snake[0][1] + direzioney == 0)
snake[0][1] = 21;
// se non si trova nei limiti..
else
{
snake[0][0]+=direzionex;
snake[0][1]+=direzioney;
}
// CONTROLLO SE IL SERPENTE MANGIA PARTE DEL CORPO
for(i=1; i<Len; i++)
{
if(snake[0][0] == snake[i][0] &&
snake[0][1] == snake[i][1])
{
system ("CLS");//pulisce lo schermo clear screen
system ("COLOR 0f");//primo carattere sfondo, secondo testo
gotoxy(1, 23);
printf("HAI PERSO!! PUNTEGGIO: %d \n", punti);
termina = 1;
}
}
// STAMPA DELLA TESTA
gotoxy(snake[0][0], snake[0][1]);
system ("CLS");//pulisce lo schermo clear screen
system ("COLOR 0a");//primo carattere sfondo, secondo testo
putchar('\376');
// CANCELLO LA CODA
gotoxy(snake[Len-1][0], snake[Len-1][1]);
putchar(' ');
// INCREMEMTO DEL SERPENTE SE MANGIA CIBO
if(snake[0][0] == ciboX && snake[0][1] == ciboY)
{
Len+=5;
punti++;
cibo=0;
system("CLS");
gotoxy(1, 23);
system ("CLS");//pulisce lo schermo clear screen
system ("COLOR 0f");//primo carattere sfondo, secondo testo
printf("PUNTI = %d \t RECORD = %d \a\n", punti, record);
printf("Premi P per mettere in pausa. ESC per ritornare al menu.");
}
}
;
system("PAUSE");
}