pomocy! [bug w programie]

0

prosze o pomoc dla chetnych. mam nieskonczona "gre" . NIE CHODZI O TO ZEBY JA DOKONCZYC, tylko naprawic buga. przez niego aplikacja sie wlacza i nic nie robi. kompiluje sie dobrze. uzywam DEVCPP.


main.cpp

/*
 *
 * Gra bez nazwy:
 * main.cpp
 * (C) 2004 by Matthew
 *
 */
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#include "main.h" // Wszystko tutaj :>

void GotoXY(short x,short y) 
{ 
	HANDLE hConsoleOutput; 
	COORD Cursor_an_Pos = { x,y}; 
	hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); 
	SetConsoleCursorPosition(hConsoleOutput , Cursor_an_Pos); 
} 

int main(int argc, char *argv[])
{
  srand((unsigned)time(NULL)); // Do losowania
  GraTrwa = true; //Gra zaczyna trwac
  CzyGraSkonczona = false; //Czy wyswietlic G.Over
    
  //Losowanie pozycji wrogow
  for (int I=0; I<=10; I++)
  {
    Wrogowie[I].X = (rand() % 80);//??
    Wrogowie[I].Y = (rand() % 25);//?? 
  }
  
  while(GraTrwa);
  {
    if (kbhit())
    {
        switch(getch())
        {
          case 2: { Gracz.Y--; RobCoTrzeba(); } break;  //Dol
          case 8: { Gracz.Y++; RobCoTrzeba(); } break;  //Gora
          case 6: { Gracz.X++; RobCoTrzeba(); } break;  //Prawo
          case 4: { Gracz.X--; RobCoTrzeba(); } break;  //Lewo
          
          case VK_ESCAPE: { GraTrwa = false; } //Esc - Wyjscie z gry
        } 
     }
  }
  if (CzyGraSkonczona)
  {
    printf("G A M E   O V E R");
    system("PAUSE");
  }
  else
  {
    printf("Narka :-)");
  }
  return 0;
}
void RuszajWrogami() // SZTUCZNA INTELIGENCJA WROGOW
{
        for (int I=0; I<=10; ++I)
        {
          if (Gracz.X >= Wrogowie[I].X) Wrogowie[I].X++; // Przesun aktualnego wroga w prawo
          if (Gracz.X <= Wrogowie[I].X) Wrogowie[I].X--; // Przesun aktualnego wroga w lewo
          if (Gracz.Y >= Wrogowie[I].Y) Wrogowie[I].Y++; // Przesun aktualnego wroga w gore
          if (Gracz.Y <= Wrogowie[I].Y) Wrogowie[I].Y--; // Przesun aktualnego wroga w dol
        } 
}

void Rysuj() // RYSUJE CALA CZADOWA SCENE
{
        system("cls");

        GotoXY(Gracz.X, Gracz.Y);
        printf("A");
        
        //Petla rysujaca wrogów (#)
        for (int I=0; I<=10; I++)
        {
          GotoXY(Wrogowie[I].X, Wrogowie[I].Y);
          printf("#");
        }
}
void SprawdzKolizje() // SPRAWDZA KOLIZJE MIEDZY WROGAMI I GRACZEM
{
  bool Kolizja = true; //Zmienna zawiera informacje czy zderzyl sie gracz z wrogiem
            
  for (int I=0; I<=10; ++I) 
  {
    if ((Gracz.X != Wrogowie[I].X) && (Gracz.Y != Wrogowie[I].X))
    {
      Kolizja = false; // Nie ma kolizji
    }
  } 
  
  if (!Kolizja)
  {
    Punkty++; // Jesli nie ma kolizji dodaj punkty.
  }  
  else
  {
    GraTrwa = false; // jesli jest to wyjdz z gry
  }
}
void RobCoTrzeba() // AI, KOLIZJA I RYSOWANIE
{
  RuszajWrogami(); 
  SprawdzKolizje();
  Rysuj(); 
}
void GraSkonczona()
{
  GraTrwa = false;
  CzyGraSkonczona = true;
}

main.h

/*
 *
 * Gra bez nazwy:
 * main.h
 * (C) 2004 by Matthew
 *
 */

void Rysuj();
void RuszajWrogami();
void SprawdzKolizje();
void RobCoTrzeba();
void GraSkonczona();

struct { int X, Y; }Gracz; //Czyli pozycja gracza
struct Wrog { int X, Y; };  //Pozycja wroga
struct Wrog Wrogowie[10];   //Wszyscy wrogowie

int Punkty; //Liczba punktów
bool GraTrwa; //Czy gra trwa?
bool CzyGraSkonczona; //Czy wyswietlic "Koniec Gry!"?

kto mi pomoze zeby cos sie dzialo??? z gory wielkie THX!!! i pamietajcie : gra jest nieskonczona wiec nie piszcie ze cos jest zle.

0

aha. wiem ze w main ten blad na pewno jest (chyba na pewno)

0

funkcja getch() zwraca kod znaku w ascii zamiast 2 uzyj np. 51

1 użytkowników online, w tym zalogowanych: 0, gości: 1