Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Lerhes

Strony: 1 ... 21 22 23 24 [25]
361
Ja mam dla Ciebie odpowiedź w chamskim stylu: U mnie działa.

Dokładnie zrobiłem to samo : najpierw 2010, potem się zorientowałem, że XNA nie będzie działał, ale po zainstalowaniu EE 2008 wszystko już było ok.
(System XP SP 3).
A reset systemu sprawdziłeś ?
Przychodzi mi jeszcze na myśl: Może zaryzykuj i wypróbuj XNA 4.0 ? :) Opiszesz nam wrażenia.

362
Szkółka / Odp: [C++] Snake w konsoli
« dnia: Maj 26, 2010, 15:55:45 »
Kto piszę tę grę? My czy ty? Jest tutaj taki dział dla leniwych, którzy chcą żeby wszystko robić za nich. Podpowiedzieć coś, co dla kogoś może być trudne to jedna sprawa, ale tłumaczyć wszystko, to coś innego.

Gdy wpiszesz w google: deque to 2 link jest stroną: http://www.cplusplus.com/reference/stl/deque/
I jest! Funkcja size() do rozmiaru, funkcja clear() do czyszczenia wszystkiego, można też używać operatorów [] czyli:  pozycjeWeza[5] -> do odczytania pary liczb.

Kolizję możesz zrobić, na przykład pisząc sobie funkcję pomocniczą (tym razem użyję operatora [] zamiast iteratorów):
bool sprawdzCzyJestZderzenieZWezem( deque< pair<int,int> > &kolejka, int x, int y)
{
bool czyOK = false;
for(unsigned int i =0; i < kolejka.size(); i++)
{
if( kolejka[i].first == x  &&  kolejka[i].second == y  )
czyOK = true;
}
return czyOK;
}
Uruchamiamy ją:
sprawdzCzyJestZderzenieZWezem(pozycjeWeza,x,y);
Jeżeli zwróci true, to znaczy że wąż zderzył się sam ze sobą. Jako x, y -> wysyłamy pozycję do sprawdzenia (tam gdzie zaraz wejdzie głowa).

363
Szkółka / Odp: [C++] Snake w konsoli
« dnia: Maj 26, 2010, 14:00:32 »
Bo się pomyliłem :) = przepraszam.
pozycjeWeza.pop_back();   -> usuwa koniec.

pozycjeWeza.pop_front(); -> usuwa z początku (co dodałeś to usnuął).

364
Szkółka / Odp: [C++] Snake w konsoli
« dnia: Maj 26, 2010, 12:45:47 »
deque to kolejka tylko że można dodawać/zdejmować elementy z jej przodu i z tyłu, a do tego można po niej iterować...
działa bardzo prosto, podobnie jak inne kontenery z biblioteki standardowej.

To może inaczej, miałeś do czynienia z vector? Bo jeżeli tak, to deque jest bardzo podobne w działaniu.

Może jednak trochę opiszę co tam jest.
pair<int,int>
Żeby nie tworzyć struktury, wykorzystałem szablon: pair. Bardzo prosto działa: "trzyma" w środku dwie liczby typu int (to będą nasze współrzędne). Aby utworzyć parę posługujemy się funkcją: make_pair(x,y) -> gdzie x i y to nasze liczby które umieszczamy w środku. Odwołujemy się do takich licz w ten sposób:
pair<int,int> para = make_pair(5,7);
cout<<para.first;   //Wypisze 5
cout<<para.second; //Wypisze 7
Fajnie mamy prosty sposób na korzystanie z pary liczb. Teraz wykorzystujemy to żeby stworzyć kolejkę takich par (czyli zapamiętać, gdzie są "elementy" które tworzą węża).
//Tworzymy kolejke z takimi parami.
deque< pair<int,int> > pozycjeWeza;
//Dodawanie nowych par jest niezwykle proste:
pozycjeWeza.push_front( make_pair(11,66) );
//Zwroc uwage ze dodajemy "push_front" -> czyli do przodu.
pozycjeWeza.push_front( make_pair(12,66) );
pozycjeWeza.push_front( make_pair(12,67) );

//Co teraz mamy w obiekcie pozycjeWeza? Takie pary: (lewa strona to "prod" prawa strona to "tyl")
//(12,67) (12,66) (11,66)   
//Sa to pozycje na ktorych jest "cialo" weza. Zalozmy ze sie teraz poruszyl, nic nie zjadajac, na pozycje 13, 67, czyli dodajemy nowy punkt:
pozycjeWeza.push_front( make_pair(13,67) );
//Ale przy okazji niszczymy ostatni element (ogon sie zwinal)
pozycjeWeza.pop_back();
//Mamy teraz w obiekcie pozycjeWeza taka sytuacje:
//(13,67) (12,67) (12,66)
//Czyli z przodu dolozylismy, z tylu wywalilismy. Proste? Proste! O to nam chodzilo? A jakze!
Ostatnia część kodu, pokazywała jak "przeglądnąć" obiekt pozycjeWeza po to aby narysować kolejne bloki na planszy (albo żeby sprawdzić czy wąż nie wszedł w samego siebie, albo żeby policzyć jaką ma długość etc).
Wykorzystuję tutaj iteratory. Powinieneś wiedzieć co to jest, zresztą krótko: Są to obiekty które zachowują się trochę jak wskaźniki i można przy
ich pomocy łatwo przeglądać co znajduje się w obiekcie pozycjeWeza, co ilustruje kod:
deque< pair<int,int> >::iterator it = pozycjeWeza.begin();
while (it != pozycjeWeza.end())
{
cout << "Ustawiamy komorke weza na pozycji: " << (*it).first<<" "<<(*it).second;
it++;
}

Edit: Nie musisz wszystkiego rozumieć o "deque" albo "pair", wystarczy że potraktujesz je jako narzędzia, które chociaż nie do końca rozumiesz jak funkcjonują, to wiesz jak ich używać, co robią i gdzie je wykorzystać. (to tak jak z wiertarką: Nie wiesz co sprawia że ona się kręci, ale umiesz ją użyć, wiesz co z nią robić i umiesz ją wykorzystać w praktyce).

365
Szkółka / Odp: [C++] Snake w konsoli
« dnia: Maj 26, 2010, 01:21:39 »
@Xirdus: Racja, nie pomyślałem nic a nic. Znacznie lepiej zastosować deque.

@ hudypatyk: Ja bym kombinował tak, myślę że kod jest czytelny:
#include <iostream>
#include <deque>

using namespace std;

int main()
{
deque< pair<int,int> > pozycjeWeza;
int x=1,y=2;
//Waz ma tam jakis zwrot, nastepuje krok petli.
//Dodajemy nowa pozycje weza jezeli cos zjadl, jezeli nie to usuwamy ostatnia.
pozycjeWeza.push_front( make_pair(x,y) );
if( ! ZjadlCosISiePowiekszyl() )
pozycjeWeza.pop_front();
//Teraz mozemy przeiterowac dla danej klatki po pozycjeWeza i narysowac go calego.
deque< pair<int,int> >::iterator it = pozycjeWeza.begin();
while (it != pozycjeWeza.end())
{
cout << "Ustawiamy komorke weza na pozycji: " << (*it).first<<" "<<(*it).second;
it++;
}
    return 0;
}

366
Szkółka / Odp: [C++] Snake w konsoli
« dnia: Maj 25, 2010, 20:53:33 »
Kolega powyżej bardzo dobrze mówi, ja bym użył zamiast wektora, kolejkę: queue z biblioteki standardowej.

367
"Poszę nie dodawać nowych tematów." -> Aha, to źle się zrozumieliśmy. Chciałem po prostu zarezerwować temat dla siebie który chętnie zaprezentuję. To w takim wypadku poczekam na ten labirynt ;]

BTW: Jest tam literówka : ma być "proszę"

368
Bardzo dobry pomysł! Dorzucę od siebie kilka pomysłów:

E: Fraktale -> Te proste -> generowane z podanego wzoru.
E: Okno z przyciskiem, do kliknięcia. (podstawa gui)
E: Okno z przyciskiem do kliknięcia, które "ucieka" przed kursorem myszy.
G: Rougelike -> Tekstowo, tylko chodzenie po mapie (bez walki, przedmiotów, questów etc, bez losowej mapy).
G: klon bouldier dash (trudniejsze)
G: klon gry sokoban (rzut z góry, może być tekstowo)

369
Szkółka / Odp: C++ słabo, może C#?
« dnia: Maj 20, 2010, 22:32:01 »
Cytuj
Po co przytaczam tutaj fragment mojego nudnego życia? Żeby zmotywować Cię do zajęcia się programowaniem.
Hmm "programista -> nudne życie", właśnie powiedziałeś że twoje życie jest nudne i jesteś programistą.
Bo jest :] szczególnie blado wygląda gdy się je porównuje na ten przykład z: Ian MacKaye.
Według mnie programistą stajesz się pisząc pierwsze "Hello world" (w końcu zaprogramowałeś urządzenie). Pytanie tylko jakim? :)
Tylko nie łączmy tych dwóch rzeczy, to że moje życie jest nudne i jestem programistą, nie znaczy że innych także.

370
Szkółka / Odp: C++ słabo, może C#?
« dnia: Maj 20, 2010, 01:28:56 »
Drogi rockefeller. Jesteś w 2 klasie liceum, jeżeli dobrze zrozumiałem. To znakomita pora do nauczenia się programowania. Sam zaczynałem troszkę wcześniej niż ty, to znaczy już w 8 klasie pisałem programy w Pascalu. Następnie w liceum miałem nawiedzoną nauczycielkę informatyki i przez trzy lata dowiedziałem się o Pascalu wszystkiego, oraz poznałem podstawowe algorytmy. Kolejnym krokiem były studia informatyczne… no i teraz dobrze płatna praca przy rzeczach które mnie cieszą.

Po co przytaczam tutaj fragment mojego nudnego życia? Żeby zmotywować Cię do zajęcia się programowaniem. To świetnie że masz Symfonię, to naprawdę dobry podręcznik dla Ciebie. Niestety, ma swoje 1000+ stron i zniechęca do czytania. Co zrobić? Metoda małych kroków. Czytaj wieczorem po jednym rozdziale (lub kilka paragrafów, jeżeli jest długi). Gdy już skończysz czytanie rozdziału, przepisz sobie przykładowe programy, zobacz że się kompilują i zmieniaj je na różne warianty.

Zdziwisz się jak szybko napiszesz swoją pierwszą grę, w stylu: Zgadnij liczbę: 100 -> Za mało. To już wystarczy  żeby pochwalić się siostrze i młodszemu bratu. Następnie zaatakuj po kolejnych kilku rozdziałach prostego roguelike’a lub sokobana (tekstowo). Potem coś z oknami (QT?) i do przodu, na Warsztacie podpowiedzą Ci którą drogą dalej iść.
Programowanie wymyślili ludzie dla ludzi, aby tworzyć wspaniałe rzeczy. Życzę Ci powodzenia i trzymam kciuki za motywację.

371
Szkółka / Odp: Eclipse - undefined reference to `_WinMain@16'
« dnia: Maj 16, 2010, 03:10:25 »
<Komentarz wielce niezwiązany z tematem>
DAB, przeczytałem co napisałeś w odpowiedzi, pomyślałem: "No Boże, napiszcie mu, temat się skończy, będzie szczęśliwy, pójdzie się pudrować" lecz nagle mnie natchnęło: "No tak, nie nauczy się niczego i jutro wrzuci kolejne pytanie z grupy: "Nie umiem użyć google"" I w sumie, może twoje metody są drastyczne, ale czegoś go nauczą.
</Komentarz wielce niezwiązany z tematem>

Od siebie dodam tylko jedną radę dla steckel'a: Jak masz jakikolwiek błąd zwracany przez kompilator/linkera, proszę sprawdź w google co on znaczy. Zdziwisz się jak wiele jest odpowiedzi.

372
Szkółka / Odp: [C++] Enum i wiele plików
« dnia: Maj 12, 2010, 14:01:42 »
ManieQ -> Sprawdziłem Twój kod, i jest on poprawny (oczywiście dokładając ten średnik na końcu).
Błąd jaki otrzymujesz wynika, jak słusznie sugeruje Patryk N. z zupełnie innej przyczyny, dla przykładu ten enum jest w jakiejś przestrzeni nazw.

Popatrz jeszcze raz, co dołącza co.

Jeżeli chcesz pełnej odpowiedzi, nie ma wyjścia i musisz cały kod pokazać. albo przynajmenij plik Rect.h.

Panowie powyżej chcieli cię wrzucić do "innego" działu niż ten dlatego, że takie błędy są charakterystyczne dla początkujących, pospolite i łatwe do wyeliminowania.

Strony: 1 ... 21 22 23 24 [25]