Skocz do zawartości

Kowal_91

Stały użytkownik
  • Liczba zawartości

    78
  • Rejestracja

  • Ostatnia wizyta

Zawartość dodana przez Kowal_91

  1. Poprawione :) Dzięki za informacje :D Dodałem pętle w momencie losowania nowego jabłka: //////////////////// FUNKCJA LOSUJĄCA JABŁKO NA MAPIE ////////////////////void losuj_jablko(char mapa[20][60], int &x, int &y, int &jx, int &jy, int &pkt){ if(x == jx && y == jy) { do { jx = rand() % 59; jy = rand() % 19; } while(jx == x && jy == y); pkt++; } mapa[jy][jx] = '*';} Jak ktoś ma jeszcze jakieś uwagi, wzmianki, które warto byłoby poprawić to proszę pisać :) No i czekam nadal na odpowiedź w sprawie wydłużającego się węża po każdym zjedzeniu jabłka :>
  2. Ok uzyskałem ten efekt. Przerobiłem funkcję ruch, niby trochę na około ale nie ogarniam jeszcze optymalizacji ;d No ale najważniejsze, że działa :) Teraz chciałbym, aby wąż po każdym zjedzeniu jabłka rósł o jedno pole. Myślałem, żeby robić to na liście bądź na wektorach, ale nigdy jeszcze nie przerabiałem tych elementów, więc nie wiem czy się połapię. Wiem tylko że można tam łatwo dodawać element na początek i usuwać element z ostatniego miejsca, ale co i jak to już nie wiem. Macie jakieś porady dla mnie czy to byłoby dobre rozwiązanie? Czy może jest jeszcze jakieś inne, łatwiejsze? Poniżej przesyłam ponownie cały kod (zmianie uległa przede wszystkim funkcja ruch() ) #include <iostream>#include <conio.h>#include <cstdlib>#include <ctime>#include <Windows.h>using namespace std;void zeruj_mape(char mapa[20][60]);void rysuj_mape(char mapa[20][60]);void wstaw_weza(char mapa[20][60], int &x, int &y);void ruch(char mapa[20][60], int &x, int &y, char &ruch);bool koniec(char mapa[20][60], int &x, int &y);void losuj_jablko(char mapa[20][60], int &x, int &y, int &jx, int &jy, int &pkt);int main(){ srand(time(NULL)); char mapa[20][60]; int x = 30; // współrzędna na osi X, czyli [j]. Przypisane są tylko początkowe wartości int y = 10; // współrzędna na osi Y, czyli [i] int jx = rand() % 59; // współrzędne pierwszego jabłka int jy = rand() % 19; // ------------||--------------- int punkty = 0; char kierunek='w'; do // główna pętla gry { system("cls"); zeruj_mape(mapa); wstaw_weza(mapa, x, y); losuj_jablko(mapa, x, y, jx, jy, punkty); rysuj_mape(mapa); ruch(mapa, x, y, kierunek); koniec(mapa, x, y); } while(!koniec(mapa, x, y)); // warunek kończący grę cout << "nn KONIEC GRY!"; cout << "nn Twoj wynik to: " << punkty; getch(); return 0;}//////////////////// FUNKCJA ZERUJĄCA MAPĘ DO GRY ////////////////////void zeruj_mape(char mapa[20][60]){ for (int i = 0; i < 20; i++) for (int j = 0; j < 60; j++) mapa[i][j] = 0;}//////////////////// FUNKCJA RYSUJĄCA MAPĘ DO GRY ////////////////////void rysuj_mape(char mapa[20][60]){ cout << " ------------------------------------------------------------" << endl; for(int i = 0; i < 20; i++) { cout << "|"; // ramka od lewej strony for(int j = 0; j < 60; j++) { if(mapa[i][j] == 0) mapa[i][j]=32; cout << mapa[i][j]; } cout << "|"; // ramka od prawej strony cout << endl; } cout << " ------------------------------------------------------------" << endl;}//////////////////// FUNKCJA USTAWIAJĄCA WĘŻA NA MAPIE ////////////////////void wstaw_weza(char mapa[20][60], int &x, int &y){ mapa[y][x] = 'O'; // wstawienie węża do gry}//////////////////// FUNKCJA PORUSZAJĄCA WĘŻA PO MAPIE ////////////////////void ruch(char mapa[20][60], int &x, int &y, char &ruch){ if(kbhit()) // sprawdza czy jest jakiś znak w buforze { Sleep(100); ruch = getch(); // jeśli jest to przypisuje go do zmiennej ruch i wykonuje jedną z następujących akcji if(ruch == 'w') y--; if(ruch == 's') y++; if(ruch == 'a') x--; if(ruch == 'd') x++; } else // jeśli nie ma to wykonuje ponownie ostatnio wykonany ruch { Sleep(100); if(ruch == 'w') y--; if(ruch == 's') y++; if(ruch == 'a') x--; if(ruch == 'd') x++; } }//////////////////// FUNKCJA SPRAWDZAJĄCA CZY WĄŻ UDERZYŁ W ŚCIANĘ ////////////////////bool koniec(char mapa[20][60], int &x, int &y){ bool test = false; if(x < 0 || x > 59) { test = true; system("cls"); return test; } if(y < 0 || y > 19) { test = true; system("cls"); return test; } return test;}//////////////////// FUNKCJA LOSUJĄCA JABŁKO NA MAPIE ////////////////////void losuj_jablko(char mapa[20][60], int &x, int &y, int &jx, int &jy, int &pkt){ if(x == jx && y == jy) { jx = rand() % 59; jy = rand() % 19; pkt++; } mapa[jy][jx] = '*';}
  3. Program udało mi się skrócić do takiej postaci jak w kodzie poniżej. Dodałem dodatkowo funkcję losującą i wstawiającą na mapę jabłka :) #include <iostream>#include <conio.h>#include <cstdlib>#include <ctime>using namespace std;void zeruj_mape(char mapa[20][60]);void rysuj_mape(char mapa[20][60]);void wstaw_weza(char mapa[20][60], int &x, int &y);void ruch(char mapa[20][60], int &x, int &y);bool koniec(char mapa[20][60], int &x, int &y);void losuj_jablko(char mapa[20][60], int &x, int &y, int &jx, int &jy);int main(){ srand(time(NULL)); char mapa[20][60]; int x = 30; // współrzędna na osi X, czyli [j]. Przypisane są tylko początkowe wartości int y = 10; // współrzędna na osi Y, czyli [i] int jx = rand() % 59; // współrzędne pierwszego jabłka int jy = rand() % 19; // ------------||--------------- do { system("cls"); zeruj_mape(mapa); wstaw_weza(mapa, x, y); losuj_jablko(mapa, x, y, jx, jy); rysuj_mape(mapa); ruch(mapa, x, y); koniec(mapa, x, y); } while(!koniec(mapa, x, y)); getch(); return 0;}//////////////////// FUNKCJA ZERUJĄCA MAPĘ DO GRY ////////////////////void zeruj_mape(char mapa[20][60]){ for (int i = 0; i < 20; i++) for (int j = 0; j < 60; j++) mapa[i][j] = 0;}//////////////////// FUNKCJA RYSUJĄCA MAPĘ DO GRY ////////////////////void rysuj_mape(char mapa[20][60]){ cout << " ------------------------------------------------------------" << endl; for(int i = 0; i < 20; i++) { cout << "|"; // ramka od lewej strony for(int j = 0; j < 60; j++) { if(mapa[i][j] == 0) mapa[i][j]=32; cout << mapa[i][j]; } cout << "|"; // ramka od prawej strony cout << endl; } cout << " ------------------------------------------------------------" << endl;}//////////////////// FUNKCJA USTAWIAJĄCA WĘŻA NA MAPIE ////////////////////void wstaw_weza(char mapa[20][60], int &x, int &y){ mapa[y][x] = 'O'; // wstawienie węża do gry}//////////////////// FUNKCJA PORUSZAJĄCA WĘŻA PO MAPIE ////////////////////void ruch(char mapa[20][60], int &x, int &y){ char ruch = getch(); if(ruch == 'w') y--; if(ruch == 's') y++; if(ruch == 'a') x--; if(ruch == 'd') x++;}//////////////////// FUNKCJA SPRAWDZAJĄCA CZY WĄŻ UDERZYŁ W ŚCIANĘ ////////////////////bool koniec(char mapa[20][60], int &x, int &y){ bool test = false; if(x < 0 || x > 59) { test = true; system("cls"); cout << "nn KONIEC GRY!"; return test; } if(y < 0 || y > 19) { test = true; system("cls"); cout << "nn KONIEC GRY!"; return test; } return test;}//////////////////// FUNKCJA LOSUJĄCA JABŁKO NA MAPIE ////////////////////void losuj_jablko(char mapa[20][60], int &x, int &y, int &jx, int &jy){ if(x == jx && y == jy) { jx = rand() % 59; jy = rand() % 19; } mapa[jy][jx] = '*';} MaciekCi, co do tych funkcji write i gotoXY nie bardzo mogę znaleźć opisy, więc też tym bardziej nie mam pojęcia jak je zastosować. Jest jeszcze jeden problem, ponieważ teraz snake jest praktycznie o zerowym poziomie trudności. Chciałbym dodać, aby wraz z czasem snake się sam poruszał w ostatnim wybranym kierunku, lecz nie mam pojęcia jak taki efekt uzyskać. Może miałby ktoś jakieś porady ? :)
  4. Okej, wziąłem pod uwagę Wasze informacje i zrozumiałem na czym polegał mój błąd. Dziękuję Wam :) Zmodyfikowałem nieco funkcję rysuj_mape, uwzględniając w niej pozycję węża. Napisałem również pozostałe funkcje, tj. poruszanie węża, oraz sprawdzanie czy wąż nie uderzył w ścianę (czy nie jest przekroczony zakres tablicy). Poniżej przesyłam kod i chciałbym, abyście mi podpowiedzieli w jaki sposób mógłbym ten kod zoptymalizować, by był nieco krótszy i prostrzy. Jestem w tej dziedzinie słaby, także chętnie wysłucham wszystkich Waszych porad :) Wiem też, że używałem tam często polecenia na czyszczenie ekranu (system("cls")) i wiem też, że na pewno można co zrobić inaczej, lepiej. #include <iostream>#include <conio.h>#include <cstdlib>using namespace std;void zeruj_mape(char mapa[20][60]);void rysuj_mape(char mapa[20][60]);void wstaw_weza(char mapa[20][60], int &x, int &y);void ruch(char mapa[20][60], int &x, int &y);bool koniec(char mapa[20][60], int &x, int &y);int main(){ char mapa[20][60]; int x = 30; // współrzędna na osi X, czyli [j]. Przypisane są tylko początkowe wartości int y = 10; // współrzędna na osi Y, czyli [i] do { system("cls"); zeruj_mape(mapa); wstaw_weza(mapa, x, y); rysuj_mape(mapa); ruch(mapa, x, y); koniec(mapa, x, y); } while(!koniec(mapa, x, y)); getch(); return 0;}//////////////////// FUNKCJA ZERUJĄCA MAPĘ DO GRY ////////////////////void zeruj_mape(char mapa[20][60]){ for (int i = 0; i < 20; i++) for (int j = 0; j < 60; j++) mapa[i][j] = 0;}//////////////////// FUNKCJA RYSUJĄCA MAPĘ DO GRY ////////////////////void rysuj_mape(char mapa[20][60]){ cout << " ------------------------------------------------------------" << endl; for(int i = 0; i < 20; i++) { cout << "|"; // ramka od lewej strony for(int j = 0; j < 60; j++) { if(mapa[i][j] != 'O') mapa[i][j]=32; cout << mapa[i][j]; } cout << "|"; // ramka od prawej strony cout << endl; } cout << " ------------------------------------------------------------" << endl;}//////////////////// FUNKCJA USTAWIAJĄCA WĘŻA NA MAPIE ////////////////////void wstaw_weza(char mapa[20][60], int &x, int &y){ mapa[y][x] = 'O'; // wstawienie węża do gry}//////////////////// FUNKCJA PORUSZAJĄCA WĘŻA PO MAPIE ////////////////////void ruch(char mapa[20][60], int &x, int &y){ char ruch = getch(); if(ruch == 'w') { y--; system("cls"); zeruj_mape(mapa); wstaw_weza(mapa, x, y); rysuj_mape(mapa); } if(ruch == 's') { y++; system("cls"); zeruj_mape(mapa); wstaw_weza(mapa, x, y); rysuj_mape(mapa); } if(ruch == 'a') { x--; system("cls"); zeruj_mape(mapa); wstaw_weza(mapa, x, y); rysuj_mape(mapa); } if(ruch == 'd') { x++; system("cls"); zeruj_mape(mapa); wstaw_weza(mapa, x, y); rysuj_mape(mapa); }}//////////////////// FUNKCJA SPRAWDZAJĄCA CZY WĄŻ UDERZYŁ W ŚCIANĘ ////////////////////bool koniec(char mapa[20][60], int &x, int &y){ bool test = false; if(x < 0 || x > 59) { test = true; system("cls"); cout << "nn KONIEC GRY!"; return test; } if(y < 0 || y > 19) { test = true; system("cls"); cout << "nn KONIEC GRY!"; return test; } return test;}
  5. Funkcja ta jest zawarta w kodzie, na samym dole :) Ona ustawia (czyli rysuje) węża na mapie, a przynajmniej powinna ale tego nie robi. //////////////////// FUNKCJA USTAWIAJĄCA WĘŻA NA MAPIE ////////////////////void wstaw_weza(char mapa[20][60]){ mapa[10][30] = 'O'; // wstawienie węża do gry}
  6. Witam, Zaznaczę na początku iż dopiero jakoś od ponad miesiąca przyłożyłem się do nauki c++. Wcześniej na pierwszym roku studiów uczyliśmy się C, potem javy, więc nie jestem w tym temacie aż taki zielony. Programowanie mnie interesuje, dlatego chcę rozwijać swoje zainteresowania i kształcić się w tym kierunku. Zakupiłem do tego celu książkę Jerzego Grębosza - Symfonia C++ standard. Uczę się z niej na bieżąco, razem z przykładami i próbuję pisać swoje własne programy, które przyjdą mi do głowy. Jestem osobą, która lubi uczyć się na własnych błędach, lecz problemu z którym próbuję się uporać nie mogę rozwikłać. Domyślam się, że przyczyna tego jest banalna, lecz na dzień dzisiejszy nie mogę pojąć dlaczego Dlatego mam nadzieję, że mi pomożecie i wyjaśnicie dlaczego to jest źle. Problem, a dokładniej rzecz mówiąc, bardziej taka ciekawostka, której nie mogę zrozumieć pojawia się podczas rysowania mapy (a dokładniej głowy węża). Ale o tym bliżej za chwilę. Moja mapa jest tablicą dwuwymiarową obiektów typu char. Posiadam dwie funkcje, jedna która rysuje mapę (tj. obramowanie i ustawia każdy z elementów tej tablicy jako znak ASCII o kodzie 255 (czyli spacja). Oraz druga, która powinna rysować głowę węża o podanych wartościach tej tablicy. Lecz niestety nie rysuje. Natomiast, gdy rysowanie węża uwzględnie w funkcji, która rysuje mapę to głowa węża zostaje na tej mapie narysowana. Dlaczego tak się dzieje? I dlaczego głowa węża nie chce się narysować za pomocą oddzielnej funkcji? Byłbym niezmiernie wdzięczny, gdyby ktoś mógł mi tę sytuację wytłumaczyć :) Oto kod programu: #include <iostream>#include <conio.h>#include <cstdlib>using namespace std;void rysuj_mape(char mapa[20][60]);void wstaw_weza(char mapa[20][60]);int main(){ char mapa[20][60]; rysuj_mape(mapa); wstaw_weza(mapa); getch(); return 0;}//////////////////// FUNKCJA RYSUJĄCA MAPĘ DO GRY ////////////////////void rysuj_mape(char mapa[20][60]){ cout << " ------------------------------------------------------------" << endl; for(int i = 0; i < 20; i++) { cout << "|"; // ramka od lewej strony for(int j = 0; j < 60; j++) { mapa[i][j]=255; cout << mapa[i][j]; } cout << "|"; // ramka od prawej strony cout << endl; } cout << " ------------------------------------------------------------" << endl;}//////////////////// FUNKCJA USTAWIAJĄCA WĘŻA NA MAPIE ////////////////////void wstaw_weza(char mapa[20][60]){ mapa[10][30] = 'O'; // wstawienie węża do gry}
  7. Witam wszystkich, Posiadam kartę dźwiękową Sound Blaster X-Fi Xtreme Gamer i aktualnie planuję zakup słuchawek do gier. Na te przedsięwzięcie chciałbym przeznaczyć nie więcej jak 300zł. Proszę bardzo o porady, jakie słuchawki (fajnie jakby był od razu mikrofon) byście mi polecili ? Maksymalnie do 400zł ale wolałym pozostać przy tych 300zł Mile widziane uzasadnienie, dlaczego akurat te Z góry dziękuję Pozdrawiam
  8. Okej w takim razie dzieki za informację Czyli uważasz, że to będzie najlepszy wybór za te pieniążki ? Czy masz może jeszcze jakieś inne karty ? A co do tego RAMU i wieszania się na CL4 masz jakiś pomysł ?
  9. Okej. I rozumiem, że mój procesor jest na tyle wydajny, że nie będzie ograniczał możliwości tej karty, prawda ?
  10. Ten HD7750 myślisz, że będzie w miarę znaczny wzrost wydajności ? :)
  11. Witam, Zamierzam zrobić mały upgrade komputera, dokupując po prostu lepszą kartę graficzną bo uważam, że procesor i pozostałe komponenty są na ten czas wystarczające :) Podaję specyfikację swojego komputera (złożonego około 4 lata temu): Procesor: Core2Duo E6850 (2x3,0GHz) - niepodkręcony mimo że mam dokupione do niego chłodzenie Freezer 7 Pro (i tutaj może moje jeszcze jedno pytanie, warto go troszkę podkręcić ? :-) ) Płyta główna: ASUS P5Q SE PLUS RAM: 2GB DDR2 GEiL (800Mhz) działające oczywiście w Dualu, 5-5-5-15, gdyż na 4-4-4-12 przy większym obciążeniu, np przy graniu po prostu mnie wysypuje i robi się bluescreen ;/ - Co może być tego powodem ? Karta graficzna: GeForce 8800GT ZOTAC AMP! Edition - właśnie tą kartę chciałbym na dzień dzisiejszy zmienić, gdyż uważam, że poprzez jej wymianę osiągnę dość znaczny wzrost wydajności. Zasilacz: Chieftec 650W CFT-650A-12B To chyba wszystko co potrzeba, dodam jeszcze, iż mam kartę dźwiękową Sound Blaster X-FI Gamer. Co do pamięci RAM to wiem, że 2GB to troche mało, więc bardzo możliwe, że dokupię po prostu jeszcze 2GB, bo ceny nie są wysokie. I bardzo bym prosił o porady, jaką kartę graficzną byście mi polecali. Chciałbym na nią przeznaczyć nie więcej niż 300zł, gdyż jestem biednym studentem i nie mogę ot tak wyrzucać kasy na jakieś większe zakupy :D. Sprzęt oczywiście chciałbym, aby nadawał się do grania w coraz to nowsze tytuły. Aktualny sprzęt razi sobie z każdą grą w miare możliwości, aczkolwiek detale niestety ale są powoli już ustawiane na coraz to niższe :) Jeśli macie jeszcze jakieś inne zastrzeżenia/porady, co do mojego sprzętu to proszę bardzo o opinie :) Pozdrawiam, i z góry dziękuję za odpowiedź :)
  12. Dzięki Wam wszystkim za pomoc w rozwiązywaniu tego problemu :) Odpowiadając na pytania to powiem, że używałem Windowsa XP (prawie 2 lata bez formata, przez to był bardzo 'zmulony'), co do zmiany portów PCI - próbowałem to także, jednakże bez skutku. Tak samo próbowałem z nowymi sterownikami do kontrolera oraz do portów USB. Problem został rozwiązany poprzez sformatowanie i zainstalowanie na nowo systemu Windows (tym razem Win 7), bo już od jakiegoś dłuższego czasu to planowałem. I teraz przy zrzucaniu plików z mojego zewnętrznego dysku transfer plików jest na poziomie 90-100MB/s, co mnie bardzo cieszy. Dziękuję bardzo za pomoc :)
  13. Wiem wiem właśnie o tym, zapomniałem napisać, że do kontrolera również podłączyłem zasilanie (małe zasilanie 4-pinowe) i problem jest dalej ten sam.
  14. Witam, Mam problem, a mianowicie zakupiłem dysk zewnętrzny Transcend Storejet 25h3 (1TB, USB 3.0) oraz z racji tego, że na swojej płycie głównej nie posiadam wyjścia USB 3.0 (płyta główna: ASUS P5Q SE PLUS) zakupiłem również kontroler USB 3.0 pod PCI-Express z allegro (link do przedmiotu: http://allegro.pl/usb-3-0-x2-karta-pcie-5gb-s-kontroler-nec-adapter-i2575116262.html). Zainstalowałem sterowniki dołączone do kontrolera USB. Następnie zgodnie z intrukcją podłączam dysk do portu USB 3.0 (dwoma kablami) i gdy próbuję zgrywać jakiekolwiek pliki (czy to duży kilkugigabajtowy, bądź kilka mniejszych plików) transfery są praktycznie identyczne jak na USB 2.0. Według mnie, wynika z tego że problem tkwi w kontrolerze, ale gdy sprawdzam dysk programem HD TUNE, transfery na tym porcie USB 3.0 wynoszą średnio 80-90MB/s. A przy praktycznym kopiowaniu plików transfery są na poziomie 7-10MB/s. W czym tkwi problem? Jeśli będzie potrzebna konfiguracja komputera chętnie na wszystkie pytania odpowiem, gdyż potrzebuję pozgrywać na ten dysk większe ilości danych, a przy tym transferze jest to praktycznie nie do wykonania. Pozdrawiam
  15. Witam, mam pytanie odnośnie blokady panelu OSD w monitorze Hyundai x224w, a mianowicie jak włączyć tę blokadę oraz ją wyłączyć ;) Pozdrawiam
  16. Witam, Mam ten odtwarzacz w domu (Manta DVD-056 Emperor) i gdy odtwarzam jakiś film z pendrive'a lub karty SD, to zawsze ucina ostatnie 6 sekund (leci film, a gdy powinno jeszcze przez 6 sekund lecieć to wtedy pokazuje się głowne menu). Próbowałem bawić się w opcjach itp., ale nic nie znalazłem, chyba że źle szukałem :) Jeśli ktoś miał podobny problem lub wie co zrobić, aby film leciał do końca to bardzo proszę o pomoc :)
  17. Witam, Mam problem, otóż na kompie P4 2,66GHz, 2x512 ddr2, radeon 9600PRO i płycie głównej asus 775Dual-880Pro włączam komputer, w biosie mogę siedzieć cały czas i restarta nie będzie. Gdy wychodze z biosu i mam do wyboru uruchomienie systemu w trybie awaryjnym, normalnie itp. obojętnie co wybiorę to po 2-3 sekundach jest reset. Dysk sprawdzałem na innym komputerze i normalnie śmiga na tym systemie co jest na nim zainstalowany (XP). Myślałem, że to może coś przez zasilacz w kompie, ale sprawdziłem na innym i także ten sam błąd, czyli restarty. Macie jakieś porady, co mogłoby być przyczyną i jak ją rozwiązać? Z góry dziękuję.
  18. o_O Świetne info Beereg :) Dzięki :D
  19. Mam takie interesujące pytanko. Od razu na początku wspomnę, że nie mam zamiaru obniżać napięcia, a wręcz przeciwnie - podwyższyć nawet troszkę po większym OC. Tylko to taka ciekawostka dla mnie, bo zawsze się zastanawiałem :D Otóż, standardowe napięcie dla E6850 to 1.35V. Do jakiej bezpiecznej wartości, można byłoby obniżyć napięcie na nim i czy w ten sposób uzyskiwane temperatury byłyby troszke niższe też?
  20. Kowal_91

    Gta 4

    Dzięki, podziałało ;)
  21. Kowal_91

    Gta 4

    U mnie nie zachowuje ustawień dotyczących grafiki (z plikiem commanline i bez niego).
  22. Kowal_91

    Gta 4

    http://up.k10x.net/kjjzcbeublfym/handling.dat Bardzo podoba mi się ta gra ;D O gościach co łapią się za drzwi to wiedziałem, ale że o helikopter? :D
  23. Kowal_91

    Gta 4

    To bierzesz radiowóz i włączasz syrene i Ci zjeżdżają z pasa ;)
×
×
  • Dodaj nową pozycję...