请帮我看看我的游戏'蛇' [英] Please help me with my game 'snake'

查看:63
本文介绍了请帮我看看我的游戏'蛇'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

posto il sorgente del gioco che ho fatto prendendo spunto da un po di progetti。

io ho usato la libreria conio.h ma mi da i seguenti errori:



sorgente:



[Carlo的翻译]

这是我的游戏蛇的源代码,我使用过 conio 库但出现了一些错误

[/ Carlo的翻译]



posto il sorgente del gioco che ho fatto prendendo spunto da un po di progetti.
io ho usato la libreria conio.h ma mi da i seguenti errori:

sorgente:

[Carlo's translation]
This is the source code of my game snake, I used the conio library but got some errors
[/Carlo's translation]

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>

void clean();
void print(int LengthSnake);

int snake[200][2];

int main(void)
{
     // DICHIARAZIONI DELLE VARIABILI
     int
     T, i, direzionex = -1, direzioney = 0, cambiodirX = 0, cambiodirY = 0, termina = 0, Len = 8, punti = 0, cibo = 0, ciboX, ciboY, record = 0, scelta;

     FILE *fp;

     fp = fopen("record", "r");
     if(fp != NULL)
     {
          fread(&record, 1, 1, fp);
          fclose(fp);
     }

     // SCELTA DELLA DIFFICOLTA'
     system("CLS");
     textcolor(15);
     gotoxy(30,3); puts("Snake 2D by Riccardo Brugnera");
     gotoxy(30,5); printf("IL TUO RECORD E': %d", record);
     gotoxy(30,7); puts("DIFFICOLTA'");
     gotoxy(30,9); puts("1) Facilissimo");
     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=75;
               break;
          case 52:
               T=35;
               break;
          case 53:
               T=15;
               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);
     textcolor(12);
     for(i=1; i<=80; i++)
          putchar('=');

     // SCRIVO I PUNTI
     clean();
     gotoxy(1,23);
     textcolor(15);
     printf("PUNTI = %d \t RECORD = %d \n", punti, record);
     printf("Premi P per mettere in pausa. ESC per ritornare al menu.");

     // 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;

               textcolor(6);
               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':
                         clean();
                         gotoxy(1,23);
                         textcolor(15);
                         system("PAUSE");
                         clean();
                         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])
               {
                    clean();
                    gotoxy(1,23);
                    textcolor(15);
                    printf("HAI PERSO!! PUNTEGGIO: %d \n", punti);
                    if(punti > record)
                    {
                         printf("NUOVO RECORD !!! \t");
                         fp = fopen("record", "w");
                         fwrite(&punti, 1, 1, fp);
                         fclose(fp);
                    }
                    system("PAUSE");
                    termina = 1;
               }
          }

          // STAMPA DELLA TESTA
          gotoxy(snake[0][0],snake[0][1]);
          textcolor(10);
          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;
               clean();
               gotoxy(1, 23);
               textcolor(15);
               printf("PUNTI = %d \t RECORD = %d \a\n", punti, record);
               printf("Premi P per mettere in pausa. ESC per ritornare al menu.");
          }
     }

     main();
     return 0;
}

void clean()
{
     int i;

     gotoxy(1,23);
     for(i=1; i<=160; i++)
          putch(' ');
}





gli errori che mi da sono i seguenti:



[Carlo的翻译]

我收到以下错误

[/ Carlo的翻译]



gli errori che mi da sono i seguenti:

[Carlo's translation]
I got the following errors
[/Carlo's translation]

||=== Build: Debug in snake (compiler: GNU GCC Compiler) ===|
obj\Debug\main.o||In function `main':|
C:\Users\Riccardo\Desktop\snake\main.c|29|undefined reference to `textcolor'|
C:\Users\Riccardo\Desktop\snake\main.c|30|undefined reference to `gotoxy'|
C:\Users\Riccardo\Desktop\snake\main.c|31|undefined reference to `gotoxy'|
C:\Users\Riccardo\Desktop\snake\main.c|32|undefined reference to `gotoxy'|
C:\Users\Riccardo\Desktop\snake\main.c|33|undefined reference to `gotoxy'|
C:\Users\Riccardo\Desktop\snake\main.c|34|undefined reference to `gotoxy'|
obj\Debug\main.o:C:\Users\Riccardo\Desktop\snake\main.c|35|more undefined references to `gotoxy' follow|
obj\Debug\main.o||In function `main':|
C:\Users\Riccardo\Desktop\snake\main.c|73|undefined reference to `textcolor'|
C:\Users\Riccardo\Desktop\snake\main.c|79|undefined reference to `gotoxy'|
C:\Users\Riccardo\Desktop\snake\main.c|80|undefined reference to `textcolor'|
C:\Users\Riccardo\Desktop\snake\main.c|103|undefined reference to `textcolor'|
C:\Users\Riccardo\Desktop\snake\main.c|104|undefined reference to `gotoxy'|
C:\Users\Riccardo\Desktop\snake\main.c|137|undefined reference to `gotoxy'|
C:\Users\Riccardo\Desktop\snake\main.c|138|undefined reference to `textcolor'|
C:\Users\Riccardo\Desktop\snake\main.c|188|undefined reference to `gotoxy'|
C:\Users\Riccardo\Desktop\snake\main.c|189|undefined reference to `textcolor'|
C:\Users\Riccardo\Desktop\snake\main.c|204|undefined reference to `gotoxy'|
C:\Users\Riccardo\Desktop\snake\main.c|205|undefined reference to `textcolor'|
C:\Users\Riccardo\Desktop\snake\main.c|209|undefined reference to `gotoxy'|
C:\Users\Riccardo\Desktop\snake\main.c|219|undefined reference to `gotoxy'|
C:\Users\Riccardo\Desktop\snake\main.c|220|undefined reference to `textcolor'|
obj\Debug\main.o||In function `clean':|
C:\Users\Riccardo\Desktop\snake\main.c|234|undefined reference to `gotoxy'|
||=== Build failed: 22 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|









premetto che utilizzo codeblocks 13.12



[Carlo的翻译]

我正在使用CodeBlocks 13.12

[/ Carlo的翻译]





premetto che utilizzo codeblocks 13.12

[Carlo's translation]
I'm using CodeBlocks 13.12
[/Carlo's translation]

推荐答案

你是尝试使用不存在的函数,一旦由旧的Borland的 conio 库提供。

有关变通方法,请参阅此Stack Overflow问题:C中gotoxy的未定义参考 [ ^ ]。
You are trying to use not existing functions, once provided by old Borland's conio libraries.
See this Stack Overflow question for some workarounds: "undefined reference to gotoxy in C"[^].


这篇关于请帮我看看我的游戏'蛇'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆