SeaMonster131 |
» 2011-05-05 19:39:39 Bo wyświetlasz dymek kiedy pr=true, a w tym if (od razu na początku) zmieniasz: pr=false. Tak mi się wydaje :p
Kod wstawiaj: [cpp] kod [/cpp] :) |
|
thamiar Temat założony przez niniejszego użytkownika |
» 2011-05-05 19:43:22 Czy podmienię na początku czy pod koniec, nie ma różnicy. Bo i tak już wszedłem do pętli (chyba :P) Nawet jak usunę tą pr=false niestety nic się nie zmienia.
Edit:wyświetlanie kodu poprawione! |
|
pekfos |
» 2011-05-05 19:50:02 kod poprawiony. bezmyślne pisanie kodu się nie sprawdza :P |
|
thamiar Temat założony przez niniejszego użytkownika |
» 2011-05-05 20:05:22 Jedno mr ciągle jest ;) Niemniej, coś z kodem ciągle knocę, bo wygląda jakby dla if( !key[ KEY_Z ] && pr ) { pr = false; } warunek nigdy nie był spełniony. |
|
dmx81 |
» 2011-05-06 01:28:41 z tego co na szybko wyczytalem - to ten warunek powyzej bedzie spelniony tylko wtedy, gdy - po pierwsze jest kolizja - po drugie puscisz klawisz Z a "pr" bedzie ustawione na "true" |
|
dmx81 |
» 2011-05-06 01:40:16 if( kolizja( player.x, player.y, player.s, player.w, enemy.x, enemy.y, enemy.s, enemy.w ) == true ) { bool pr = false; if( key[ KEY_Z ] ) pr = true; if( !key[ KEY_Z ] && pr ) { pr = false; if( hit == 1 ) { masked_blit( dymek, bufor, 0, 0, enemy.x + 10, enemy.y + 10, enemy.s, enemy.w ); } else; } }
|
a w tym kodzie widze to tak: jesli kolizja to: - ustaw pr jako false; - jesli klawisz Z to pr = true; - jesli nie wcisniety Z, to pr= false i jesli (wciaz nie wcisniety Z) i dodatkowo hit==1, to wyswietl dymek niestety nie widze tutaj calego kodu - czyli w ktorym momencie ustalasz wartosc hit (i jakie inne moze przyjac wartosci z tego losowania, bo koledzy pisali rozne wersje, a nie wiadomo, czy cos zmieniles u siebie w kodzie (albo ja nie zauwazylem, bo oczy sie juz zamykaja...) Pisze ci tak, zebys sam znalazl blad, bo w sumie nie wiem, co ma byc tu celem ( w czasie kolizji i nie wcisniety klawisz Z ma powodowac wyswietlanie dymka, jesli hit==1?) Czy wyswietlasz sobie gdzies wartosc hit? Czy wyswietlasz sobie gdzies, ze kolizja==true? czy wyswieltasz sobie gdzies, jaki jest stan pr? jesli nie, to poskladaj to do kupy i sam zaobserwujesz, w ktorym momencie pojawia sie blad. Czasem zamiast gotowej odpowiedzi, lepiej jest dac inny punkt widzenia :) Ale jesli powyzsze nie pomoze, to bedziemy szukac dalej Napisz w razie czego, dokladniej, jaka ma zaistniec sytuacja, kiedy co powinno sie wydarzyc (czesto tez podczas pisania dokladnego opisu problemu, samemu znajdujemy odpowiedz...) |
|
thamiar Temat założony przez niniejszego użytkownika |
» 2011-05-06 12:14:42 Co jest aktualnie: Podczas kolizji, przy wciśnięciu "Z" postać wykonuje nieskończoną liczbę ataków z prędkością światła. Co chciałbym osiągnąć: Jedno wciśnięcie "Z"=Jeden atak. (Oprócz tego grafika znika błyskawicznie z powodu podwójnego buforowania, ale to pytanie raczej na osobny temat ;) ) wiec: [code]w czasie kolizji i nie wcisniety klawisz Z ma powodowac wyswietlanie dymka, jesli hit==1?[/code] Tak, dokładniej chodzi o to, by uniemozliwic nieustanny "atak" podczas przytrzymywania klawisza "Z". [code]Czy wyswietlasz sobie gdzies wartosc hit?[/code]Nie, po prostu podstawiłem wartość. Niestety nie wiem jak w alegro wyswietlić wartość zmiennej (cout nie działa ;) ) [code]Czy wyswietlasz sobie gdzies, ze kolizja==true?[/code]Kolizja działa. Bez udziwniania z wciskaniem/odciskaniem "Z" dymek pojawia się po klikaniu w Z dopiero wtedy, gdy nastąpiła kolizja. [codee]czy wyswieltasz sobie gdzies, jaki jest stan pr?[/codee] To samo co przy hit. Aktualny kod: bool pr = false; int hit = 0;
if( kolizja( player.x, player.y, player.s, player.w, enemy.x, enemy.y, enemy.s, enemy.w ) == true ) { if( key[ KEY_Z ] ) pr = true; hit = rand() % 100; if( !key[ KEY_Z ] && pr == true ) { if( hit <= 66 ) { masked_blit( dymek, bufor, 0, 0, enemy.x + 10, enemy.y + 10, enemy.s, enemy.w ); } else masked_blit( trafienie, bufor, 0, 0, enemy.x + 10, enemy.y + 10, enemy.s, enemy.w ); } }
Co wyszło? Ano nie ma żadnego ataku, nie pojawia się dosłownie nic. Zupełnie jakby if( key[ KEY_Z ] ) pr=true; nie reagowało. Kiedy wstawiłem odwrotnie tj. if( !key[ KEY_Z ]&&pr==false) ludzik atakował non-stop, dopóki nie wcisnę "Z". Także program przechwytuje klawisz, ale wygląda jakby wciśnięcie klawisza prócz samego faktu, że jest wciśnięty nie robi tego, co robić powinien. |
|
dmx81 |
» 2011-05-06 14:12:05 za pol godz przeczytam i odpisze :D |
|
1 « 2 » 3 4 |