Skocz do zawartości

Draconis

Użytkownicy
  • Postów

    115
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Draconis

  1. Jakby kogoś interesowało toplik projektuWcześniej robiłem to w C++ na tablicach, lecz nie jestem aż tak bardzo zaawansowany w c++ i nie znam się zbytnio na grafice czy obsłudze klawiatury. Kod C++ (jeszcze nie wiem jak pobrać od użytkownika początkowy układ więc jest zakodowany jeden w programie.) #include <cstdlib> #include <iostream> using namespace std; const int wielkosc=10; bool plansza[wielkosc][wielkosc]= { 0,1,0,1,0,1,0,1,0,1, 0,0,1,0,0,0,0,0,1,1, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,0,0,0, 0,0,0,0,1,0,0,0,0,0, 0,0,0,0,1,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0 }; bool tymczasowa[wielkosc][wielkosc]={}; int x=0; int y=0; int k; int test() {int x=0; int y=0; while (y<wielkosc) { k=plansza[x-1][y-1]+plansza[x-1][y]+plansza[x-1][y+1]+plansza[x][y-1]+plansza[x][y+1]+plansza[x+1][y-1]+plansza[x+1][y]+plansza[x+1][y+1]; if (plansza[x][y]==0) { if ((k==3)) { tymczasowa[x][y]=1; } } if (plansza[x][y]==1) { if ((k==2)||(k==3)) { tymczasowa[x][y]=1; } else tymczasowa[x][y]=0; } x++; if (x==wielkosc) { y++; x=0; } } y=0; cout<<endl; x=0; while (y<wielkosc) { x++; plansza[x][y]=tymczasowa[x][y]; if (x==wielkosc) { y++; x=0; } } } int pokaz() {int x=0; int y=0; while (y<wielkosc) { if (plansza[x][y]==1) { cout<<"*"; } if (plansza[x][y]==0) { cout<<" "; } x++; if (x==wielkosc) { y++; cout<<endl; x=0; } } } int main(int argc, char *argv[]) { int ile; system("color 0c"); pokaz(); UP: cout<<"Ile s wyswietlic"; cin>>ile; while (ile>0) { system("cls"); pokaz(); test(); cout<<endl; ile--; } goto UP; system("PAUSE"); return EXIT_SUCCESS; } Tak, wiem że nie działa poprawnie (źle liczy dla komórek krawędziowych, muszę dodać pętlę zerującą krawędź dla prawidłowego działania)v Tak, wiem że GOTO nie jest najlepsze i w tym wypadku uniemożliwia zakończenie i wszystko po nim i tak nie zadziała w tym kodzie.
  2. Dokładnie, dla 0/1/4/5/6/7/8 sąsiadów komórka zmienia się w off GML s=LiczObj(self.id,on) switch (s) { case 0:instance_change(off,0);break; case 1:instance_change(off,0);break; //case 2:instance_change(off,0);break; //case 3:instance_change(off,0);break; case 4:instance_change(off,0);break; case 5:instance_change(off,0);break; case 6:instance_change(off,0);break; case 7:instance_change(off,0);break; case 8:instance_change(off,0);break; }
  3. Ciekawe, w off dla 0/1/2/4/5/6/7/8 sąsiadów (bez 3) zwraca prawidłowo, dla 3 sąsiadów zwraca 0
  4. Błąd jest taki że prawidłowo działają jedynie struktury stałe. Mam wrażenie że kod dla off nie działa poprawnie, gdyż komórka off nie jest zamieniana na on.
  5. OK, robię automat komórkowy, mam (na razie, w projekcie więcej) 2 rodzaje komórek, reprezentują je obiekty o nazwach on i off, komórki wypełniają całą planszę według siatki, w komórkach off mam aktualnie kod: GML s=LiczObj(self.id,on) switch (s) { //case 0:instance_change(off,0);break; //case 1:instance_change(off,0);break; //case 2:instance_change(off,0);break; case 3:instance_change(on,1);break; //case 4:instance_change(off,0);break; //case 5:instance_change(off,0);break; //case 6:instance_change(off,0);break; //case 7:instance_change(off,0);break; //case 8:instance_change(off,0);break; } W komórkach on analogicznie, aktualnie według reguł Conwaya w celu sprawdzenia czy dobrze działa. Funkcję zedytowałem na następującą, gdyż makerowi. GML a=argument0; b=argument1; licz=0; with(b) { //if(point_distance((other.a).x,(other.a).y,x,y) <= r) if(distance_to_object(other.a)<= 6) other.licz+=1; } return licz;
  6. Chyba wiem czemu nie zadziałało mi to poprawnie, po prost GMaker nie liczy tego przecież dla wszystkich obiektów naraz tylko po kolei, i zanim w ostatnim obiekcie policzy, to obiekty, które miał liczyć mogą zniknąć, chyba zrobię to tak jak robiłem w C++ i użyję dwóch tablic, w pierwszej zapiszę układ planszy a w drugiej po obliczeniach a potem skopiuję zawartość drugiej do pierwszej.
  7. Dzięki, umieściłem ten skrypt w projekcie, w obiektach umieściłem kod GML s=LiczObj(self.id,object,4) switch (s) { case 3:(instrukcja);break; case 4:(instrukcja);break; } Lecz nadal się nie wykonuje poprawnie, nie jestem pewien czy Twój kod uwzględnia wielokrotne wystąpienie obu rodzajów obiektów.
  8. Witam. Potrzebuję sposobu, na liczenie obiektów określonego typu w promieniu n.px od określonego obiektu, inaczej mówiąc, by dana akcja się wykonywała wtedy i tylko wtedy gdy w sąsiedztwie Obiektu_a znajdowała się określona liczba obiektów_b np. tylko dla 3 lub 4 a dla 1,2,5,>5 już nie, jako iż projekt jest w siatce, próbowałem użyć takiego kodu: GML s=0 if collision_point(x+5,y+5,object,1,0) then s=s+1 if collision_point(x+5,y,object,1,0) then s=s+1 if collision_point(x+5,y-5,object,1,0) then s=s+1 if collision_point(x-5,y+5,object,1,0) then s=s+1 if collision_point(x-5,y,object,1,0) then s=s+1 if collision_point(x-5,y-5,object,1,0) then s=s+1 if collision_point(x,y+5,object,1,0) then s=s+1 if collision_point(x,y-5,object,1,0) then s=s+1 switch (s) { case 2:(INSTRUKCJA);break; case 3:(INSTRUKCJA);break; } próbowałem też zmieniać prec i notme lecz to nie działa poprawnie, nawet taki sam układ obiektów, uruchamiany kilka razy powoduje różne rezultaty. kod jest w Key Press Space Pozdrawiam
  9. Powinienem napisać, Windows, ' Konkretnie Win7 Starter, z którego nie mogę niestety zrezygnować jeszcze przez parę miesięcy (chyba że kupiłbym lepszą wersję)
  10. Witam Nie mam pojęcia czy miejsce, w którym to piszę jest prawidłowe lecz pozostałe tematy zdawały się mi być mniej odpowiednie do tego co chcę uzyskać. (tu powinienem coś wstawić bo trochę głupio przechodzić bezpośrednio do pytania lecz nie mam pomysłu co) Czy (i jeśli tak to jak) jest możliwe utworzenie twardego dowiązania do pliku znajdującego się w archiwum? Ewentualnie jakaś inna metoda sprawiająca, że edytując określony plik automatycznie zmieniałaby się zawartość odpowiedniego pliku w archiwum, konkretnie w .jar Pozdrawiam
  11. Dlatego napisałem "coś jakby przezroczystość" Miałem na myśli przezroczystość wewnątrz grafiki, czyli że można uzyskać efekt, że widać co było pod spodem. Proponuję jakieś usprawnienie regulaminu mówiące, że w tematach z czyjąś grą komentarze pisze się na temat gry a nie na temat programów w jakich była robiona grafika itp. i w jakich byłoby lepiej.
  12. najnowsza wersja painta pozwala na cofnięcie ok.50. kroków i obsługuje coś jakby przezroczystość oraz kilka efektów dla pędzle, niestety(stety?) dyskwalifikuje go brak podstawowej rzeczy jaką są warstwy.
  13. Thx, no to już możecie się bać, że dojdzie kolejna schematyczna niedorobiona gierka nie wnosząca nic nowatorskiego.
  14. hudy0070 dzięki za dwa pierwsze kody, Nie chodziło mi o rozdzielczość okna z grą a o rozdzielczość ekranu komputera.
  15. Wolałbym jednak pobrać rozdzielczość ekranu i do niej dopasować, gdyż zmiana rozdzielczości ekranu do aplikacji okienkowej niezbyt mi się podoba, zresztą wtedy bym dopasował do swojego ekranu i wszyscy by narzekali że to takie duże (albo małe ale w to wątpię, chyba, że ktoś pracuje na rozdzielczości 800x600)
  16. Witam. Czy istnieje w GM możliwość pobrania współrzędnych, na których znajduje się okno z grą i zapisanie ich do zmiennych i jeśli tak to w jaki sposób to osiągnąć? Pozdrawiam Edit. A także zdobycia informacji o rozdzielczości ekranu gracza.
  17. Kolejne pytanie. Używam biblioteki winbgim, czy jest możliwe stworzenie w niej aplikacji z dwoma (lub więcej) oknami graficznymi działającymi niezależnie od siebie i jeżeli tak to w jaki sposób je rozróżnić w kodzie) edit Używam biblioteki conio.h a konkretnie funkcji getch(), tylko, że w przypadku zmiany znaku lub naciśnięcia >1 naraz, program się zacina na ułamek sekundy co jest denerwujące, więc pytanie brzmi, czy jest jakaś praktyczniejsza metoda operacji na klawiszach w podstawowych bibliotekach? edit Zrobiłem swoją pierwszą minigrę w C++ i oczywiście chcę się nią pochwalić, mimo iż do tego się nie nadaje, Jest to moja wersja gry Lightcycle, więc chyba wszyscy wiedzą o co chodzi. W aktualnej wersji nie ma przeciwników. Najlepszy wynik jest zapisywany do pliku. O prymitywności tej wersji świadczy też to że po spakowaniu zajmuje ok 300kb Pobierz edit $Wrzuciłem wam wersję z błędnym sprawdzaniem więc proszę byście w pseudomenu nie wciskali niczego, co nie jest wymienione.
  18. Draconis

    Turris (v1.07)

    @Flaque Może zbyt nisko budowałeś i twoja wieża nie jest wystarczająco wysoka? Dlatego iż jest taka możliwość uważam, że powinna być możliwość usuwania budynków i przenoszenia ich w inne miejsce.
  19. O znajdywanie drogi, ale wyłącznie po obiekcie (bez schodzenia na puste pola, lub obiekty innego rodzaju) .
  20. Draconis

    Turris (v1.07)

    Przestały mi działać jakiż czas temu Deszcz Skał i Gorąca Smoła, tylko że smoła się zużywa. Zmień opis wojownika.
  21. Draconis

    MoeLocker

    W takim razie zablokuj jeszcze "L"
  22. Mam jeszcze jeden problem (nie myślcie tylko że ostatni) Jak zrobić by ludzie chodzili z domów na rynek po drogach ( i na odwrót, ale tym się potem zajmę) , czyli coś podobnego do Stepavoiding(czy jakoś tak) tylko, że na odwrót.
  23. Dzięki, na razie wpadłem na inny pomysł, który chcę przetestować wymagający dwóch rodzajów dróg. Działa i nie ogranicza działania do jednego rynku
  24. Witam Szukam sposobu by sprawdzić czy obiekt A(Nazwijmy go Dom) jest połączony z obiektem B(Nazwijmy go Rynek) przy pomocy obiektów C(Nazwijmy je Droga) Położenie wszystkich obiektów jest wybierane przez gracza, może być tylko jeden Rynek, z którym wszystkie Dom muszą być połączone przy pomocy Dróg, przy czym dozwolone jest łączenie pośrednie (Za pośrednictwem kilku obiektów Droga) Jakby co całość jest w rzucie top-down i wszystkie obiekty są dopasowane do siatki (32x32 czyli tyle ile mają dom i droga, rynek jest cztery razy większy i zajmuje 64x64) Pozdrawiam
  25. Draconis

    Turris (v1.07)

    Zdecydowanie jest traineroodporna, (jak większość gier z GameMakera), wprawdzie da się zedytować złoto czy manę, lecz po kolejnym uruchomieniu gry zajmują te dane inne miejsce w pamięci i trzeba na nowo szukać więc stworzenie trainera byłoby bardziej skomplikowane. @main Prosiłbym o opcję całkowicie wyłączającą efekty pogodowe, mam wrażenie, że one mocno spowalniają mi grę, dochodzi nawet do 20% a średnia zimą to ok 30% (Co po części jest też ułatwieniem bo mam więcej czasu na wycelowanie. A także o możliwość wielokrotnego budowania budynków takich jak kościół. Oraz w przypadku zwykłych budynków jak np. wieża alchemika możliwość ich usuwania i umieszczania w innym miejscu (Choć preferowałbym tak samo możliwość stawiania w wielu miejscach, wtedy wszystkie by atakowały a zużywałoby odpowiednią ilość amunicji). Jeżeli budowanie wielu kościołów ułatwiłoby zbytnio grę to można by było zwiększać cenę o np. 50% z każdym kolejnym. Przydałyby mi się też kolejne wieże łucznicze kontrolowane przez gracza.
×
×
  • Dodaj nową pozycję...