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

rand() i poprawa kodu

Ostatnio zmodyfikowano 2009-06-02 22:57
Autor Wiadomość
Camper
Temat założony przez niniejszego użytkownika
rand() i poprawa kodu
» 2009-06-01 22:33:38

Mój problem polega na tym że postać dziwnie się teleportuje czasami do jakich współrzędnych nie wiadomo skąd.
Po drugie Random co włączenie programu losuje te same liczby (tj. e kolejności np. 400, później 753, i tak samo po ponownym uruchomieniu programu.)
Znam to już z Pascala i chyba Delphi, ale czy nie da się czegoś z tym zrobić ?

Kod :

C/C++
//AI
if( chodzenie == false ) {
    a = random( 0, 800 );
    b = random( 0, 600 );
   
}

if( chodzenie == false ) {
    if(( a + b ) > 0 )
    {
        // play_sample(dzwiek, 255,127,1000,0);
        ib2x = bot_x;
        ib2y = bot_y;
        celb2x = a;
        celb2y = b;
        deltab2X = ib2x - celb2x;
        deltab2Y = ib2y - celb2y;
        chodzenie = true;
    } }

if(( deltab2Y ) == 0 )
{
    katb2 = 0;
} else
{
    katb2 = atan(( deltab2X ) /( deltab2Y ) );
} //else

if( deltab2Y >= 0 )
{
    katb2 += M_PI;
} //if

if( chodzenie == true ) {
    if( ib2x != celb2x )
    { ib2x += sin( katb2 ) * predkosc2; }
   
    if(( celb2x - ib2x ) < predkosc2 )
    { ib2x = celb2x; }
   
    if( ib2x == celb2x )
    {
        if( ib2y != celb2y )
        {
            ib2y += cos( katb2 ) * predkosc2; } }
   
    if(( celb2y - ib2y ) < predkosc2 )
    { ib2y = celb2y; }
    if( ib2y == celb2y )
    { chodzenie = false; }
}

bot_x = ib2x;
bot_y = ib2y;

draw_sprite( bufor, bot, bot_x, bot_y );
P-7371
pixelmaster
» 2009-06-01 22:55:02
wcześniej trzeba chyba dać
randomize();
P-7373
DejaVu
» 2009-06-01 23:28:17
randomize(); jest w pascalu. W C++ jest:
C/C++
srand( time( NULL ) );
Przykład:
http://www.cppreference.com/wiki/c/other/srand

Pliki nagłówkowe:
C/C++
#include <cstdlib>
#include <ctime>
P-7375
Camper
Temat założony przez niniejszego użytkownika
» 2009-06-02 17:40:13
Rand() działa już świetnie, jedyne co z czym teraz mam problem to fakt że obiekt teleportuje się dziwnie co kilka pozycji. (tj. jeździ do pozycji wyznaczonych przez random ale czasami teleportuje się w inne miejsce i jedzie do lokacji.)
Poza tym jest jeszcze sprawa prędkości. Otóż kiedy cel jest blisko, obiekt bardzo zwalnia, nie potrafię tego wyłapać w pętli.
P-7384
DejaVu
» 2009-06-02 17:49:47
Szczerze mówiąc nie chce mi się szukać przyczyny 'teleportacji'. Najwyraźniej masz błąd w programie (np. losujesz nową pozycję do której ma dojść nie sprawdzając, czy ją osiągnął). Zdecydowaną większość programu skopiowałeś z forum tak więc wydaje mi się, że możesz postarać się trochę i samodzielnie rozwiązać problem teleportacji.
P-7386
Camper
Temat założony przez niniejszego użytkownika
» 2009-06-02 19:49:19
Wybacz że proszę o pomoc tak często ale naprawdę piszę dopiero wtedy gdy dwukrotnie sprawdzę kod i już nie potrafię niczego wymyślić.
Jeżeli nuży cię odpowiadanie na moje pytania to po prostu tego nie rób, postaram się zasięgnąć opinii innych użytkowników.

Dalej mam problem z teleportacją i zwalnianiem kiedy punkt jest blisko.
P-7392
Camper
Temat założony przez niniejszego użytkownika
» 2009-06-03 23:28:51
Więc twierdzisz że debuger powie mi dlaczego postać się teleportuję albo dlaczego zwalnia gdy punkt jest blisko tak ?
P-7417
DejaVu
» 2009-06-04 08:58:29
debugger nic nie powie. Możesz jednak za pomocą niego prześledzić program krok po kroku lub od pewnego miejsca działania patrząc w kod, podlądając obecny stan zmiennych i jakie linijki po kolei się wykonują.
P-7419
« 1 » 2
  Strona 1 z 2 Następna strona