Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak zrobić snake'a? - użycie pętli

Ostatnio zmodyfikowano 2009-01-03 00:33
Autor Wiadomość
lynx
» 2009-01-02 23:23:47
Mam do Ciebie pytanie.
Dlaczego nie sprawdziłeś mojego fragmentu kodu a prosisz o pomoc??
Mój fragment kodu działa dobrze a oto przykładowy program z użyciem jego fragmentu:
C/C++
#include <iostream>
#include<conio.h>
using namespace std;
int main()
{
    while( 1 == 1 )
    {
        if( kbhit() == true )
        {
            char x = getch();
            cout << "Wcisnieto klawisz: " << x << "\n";
        }
    }
}
P-3264
Patzick
» 2009-01-02 23:26:06
to wada edytowania postów ;)
jak już jest nowy post nie ma sensu edytować starego, chyba, że jest wybitna potrzeba :)

//EDIT
chyba, że to wyszczególnisz ;)

//EDIT2
ja ze swojej strony zauważyłem błąd
zamiast kbhit == 1 powinno być kbhit == true tak jak podał Pietrzuch :) zapomniałem o tym :P
P-3266
zori
Temat założony przez niniejszego użytkownika
» 2009-01-02 23:30:52
Chodzi o to że ten kod sie nie nadaje do tego co chce zrobic. Teraz dopiero go sprawdziłem ale i tak jest jak myślałem nie przyda sie ale dzięki za chęci.
Mi chodzi o to że petla ma nie patrzec czy ty coś wcisnołes czy nie jesli nic nowego nei wcisnołeś to bedzie jak przy poprzednim wykonaniu petli. Czyli jak wąż szedł w prawo to dalej pujdzie w prawo. A jak np wcisne strzalke w góre to wąż zmieni kierunek i bedzie teraz cały czas szedł w góry. Cos mi sie wydaje jak bys nigdy nie grał w Snejka ale chyba w to każyd grał bo fajna i prosta gierka :P
P-3267
lynx
» 2009-01-02 23:33:01
Troche zbaczamy od tematu, ale to wszystko jedno czy zapiszesz tak:
if( kbhit() == 1 )
czy
if( kbhit() == true )
lub nawet
if( kbhit() )

/edit1:
Przecież masz główną nieskończoną pętelę, która nie patrzy czy jest wciśnięty klawisz czy nie. ;)


/edit2:
dopuki nic nie wcisniemy to pokazuje 0 jak cos nacisne to pokazuje 1 juz w nieskończoność.
Co do tego to jest to spowodowane tym, że jak raz bufor zostanie nadpisany to sam się nie czyści. :)
W if-ie z kbhit-em dopisz:
C/C++
fflush( stdin ); //z naglowka stdio.h
P-3268
zori
Temat założony przez niniejszego użytkownika
» 2009-01-02 23:40:47
Ten mój przykład to był przykładowy i wiem ze tej pętli nie było sposobu zakończyc oprucz wciścnięcia zamknij.
Ale wracając do tematu wie ktoś jak by zrobic takiego snake-a??

/edit
co do tego fflush(stdin) nie działa mi to :(
P-3269
Patzick
» 2009-01-02 23:41:49
rozwiązanie podajemy Ci dobre ale jak trzeba

C/C++
//musisz mieć zdefiniowane chodzenie snake'a
char z; //jeszcze zdeklarowana dodatkowa zmianna
//i teraz masz
while( snake == chodzi ) {
    //jakis kod
    if( kbhit() == true ) {
        z = getch();
        return z;
    };
    //jeszcze sprawdzenie
    if( z == a ) {
        lewo;
    };
    if( z == w ) {
        gora;
    };
    if( z == 0 ) { };
   
    //a na koncu petli
    z = 0;
};

To tylko pomysł, nie gotowy kod więc musisz sobie wszystko podostawiać sam.

//EDIT
Pietrzuch zgłupiałem na moment i pokićkało mi się że źle podałem ;)
zori temat był inny "kbhit()" a nie "jak zrobić snake'a" podaliśmy Ci i tak jak wykorzystać tą funkcję, musiałbyś sam pomyśleć nad rozwiązaniem- ja i tak dałem Ci przykładowe, mam nadzieję że już jasne
P-3270
zori
Temat założony przez niniejszego użytkownika
» 2009-01-02 23:45:30
Jasne wszystko sam zrobie tylko tej jednej rzeczy nie wiedzaiałem zaraz sprawdze twój kod i zobaczymy. :)

/edit
Sorki troszke wam namieszałem.
P-3272
lynx
» 2009-01-02 23:50:59
Fflush(stdin) działa dobrze bo sprawdzałem. Po za tym co by się działo jakby każda osoba zmieniała po chwili nazwę swojego tematu na nowy mówiący z czym ma aktualnie problem, co by się działo z poprzednimi postami?? Sorry ja się poddaje. ;)
P-3274
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona