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

[C++/Allegro] Wzbogacanie kodu o scrollowanie i kafelkoawnie mapy.

Ostatnio zmodyfikowano 2010-08-10 22:29
Autor Wiadomość
Scot
Temat założony przez niniejszego użytkownika
[C++/Allegro] Wzbogacanie kodu o scrollowanie i kafelkoawnie mapy.
» 2010-06-30 19:18:36
Problem moj polega na tym iz jestem nowym uzytkownikiem allegro i jesli sam napisze cos to umiem z tego skorzystac , ale jesli w gre wchodzi buforowanie itp zawsze mam problemy zastosowac to w wlasnym kodziem . Tym razem przyszla kolej na scrollowanie . Scrollowanie i kafelkownie mapy jest skopiowane z forum , jednak nie dokonca dziala . Na tablicach sie nie znam wiec rowniez zapewne sa zle . Prosilbym by ktos doswiadczony poprawil kodzik by wszystko dzialalo tzn wywalil to co zbedne .
Postac - postac.bmp
Niebo - kafel1.bmp
Piasek - kafel2.bmp
Mapa - mapax [jednak teraz chce ja zastapic kaflami]

C/C++
#include <allegro.h>
BITMAP * plansza = create_bitmap( SCREEN_W, SCREEN_H );
BITMAP * kafel1 = load_bmp( "kafel1.bmp", default_palette );
BITMAP * kafel2 = load_bmp( "kafel2.bmp", default_palette );

int map_x = 0, map_y = 0;
int szerokosc_kafla = 40, wysokosc_kafla = 40;

void map( void )
{
    for( int x = 0; x > 10; x++ ) //Na osi x wyświetli 10 kafelków na raz
    {
        for( int y = 0; y > 10; y++ ) //Na osi y wyświetli 10 kafelków na raz
        {
            if( mapa[ x ][ y ] == 1 ) blit( kafel1, plansza, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
            if( mapa[ x ][ y ] == 2 ) blit( kafel2, plansza, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
        }
    }
}

int mapa[ 20 ][ 10 ] //Mapa 20 na 20 kafli
{
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
}

int szerokosc_kafla = 40, wysokosc_kafla = 40;
void map( void )
{
    for( int x = 0; x > 10; x++ ) //Na osi x wyświetli 10 kafelków na raz
    {
        for( int y = 0; y > 10; y++ ) //Na osi y wyświetli 10 kafelków na raz
        {
            if( mapa[ x ][ y ] == 1 ) blit( kafel1, plansza, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
            if( mapa[ x ][ y ] == 2 ) blit( kafel2, plansza, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
           
           
            //Nieistotne
           
            int postac_x = 5, postac_y = 455;
            int mapa_x = 0, mapa_y = 0;
           
            while( !key[ KEY_ESC ] )
            {
               
                if(( key[ KEY_RIGHT ] ) &&( mapa_x < 10 ) ) { mapa_x = mapa_x + 1; } else
                if(( key[ KEY_LEFT ] ) &&( mapa_x > 0 ) ) { mapa_x = mapa_x - 1; } else
                if(( key[ KEY_DOWN ] ) &&( mapa_y < 5 ) ) { mapa_y = mapa_y + 1; } else
                if(( key[ KEY_UP ] ) &&( mapa_y > 0 ) ) { mapa_y = mapa_y - 1; }
               
               
                if( key[ KEY_LEFT ] ) postac_x--;
               
               
                if( key[ KEY_RIGHT ] ) postac_x++;
               
               
               
               
                clear_to_color( bufor, makecol( 150, 150, 150 ) );
                masked_blit( mapax, bufor, 0, 0, 0, 0, mapax->w, mapax->h );
                masked_blit( postac, bufor, 0, 0, postac_x, postac_y, postac->w, postac->h );
                blit( bufor, screen, 0, 0, 0, 0, bufor->w, bufor->h );
               
                //Nieistotne
P-18447
lenrokskate
» 2010-06-30 19:38:05
1. zamiast [code][/code] używaj [code src="C++" zwin][/code]
2. Jak nie znasz podstawowej rzeczy jaką jest tablica zmiennych to wywal Allegro z komputera
3. Sorki za ostre pojechanie po Tobie, ale denerwuje mnie słomiany zapał - lepiej spędzić dużo czasu przy podstawach niż później miewać z nimi problemy; narazie na co najmniej 2 miechy odpuść sobie biblioteki graficzne i używaj tylko konsoli
4. Jak ciągle ktoś będzie robił wszystko za Ciebie to do niczego w programowaniu nie dojdziesz
P-18448
Scot
Temat założony przez niniejszego użytkownika
» 2010-06-30 20:10:33
1.Nie ma problemu , postaram sie zapamietac .
2.Ucze sie jednoczesniej funkcji allegro i c++ czytajac symfonie , jednak bardziej wciaglo mnie allegro .
3.Nie obrazam sie , jednak nie jest to slomiany zapal i po twoim poscie zdania nie zmienie , bez obrazy .
4.Ciezko w internecie znalesc dobry poradnik do allegro , i sprawia mi problem laczenie kodow i nic na to nie poradze , z czasem moze wejde do wprawy . Dopuki tak sie nie stanie licze na pomoc uzytkownikow forum i mam nadzieje ze ktos bedzie na tyle zyczliwy i pomoze .
P-18449
waxx
» 2010-06-30 20:34:13
naucz sie podstaw wpierw potem bierz sie za allegro
P-18450
Scot
Temat założony przez niniejszego użytkownika
» 2010-06-30 20:39:13
Dobra to juz slyszalem i w tym momencie zaczelo mnie to irytowac . Mam taka prosbe , jesli nie wiecie jak pomoc badz nie macie na to ochoty poprostu nic nie piszcie niz nabijac zbednie posty .
P-18451
DejaVu
» 2010-06-30 21:56:47
No przeczytałem sobie te wywody no i tak:
1) Użytkownicy nie są chętni do poprawiania czyjegoś kodu - my staramy się wskazać błędy.
2) Jeżeli piszesz w Allegro, a nie wiesz co to są tablice i jak działają - wstrzymaj się z jego nauką i opanuj podstawy programowania w C++ - bez nich co i rusz będziesz zadawał 'bezsensowne' pytania w mniemaniu użytkowników, a w konsekwencji będzie toczyła się taka jałowa dyskusja jak teraz.
3) Staraj się minimalizować problemy, które przedstawiasz na forum. Większa szansa, że ktoś pomoże.

Z tego co zrozumiałem to:
1) Skopiowałeś jakiś kod z forum.
2) Oczekujesz od użytkowników, by Ci go rozbudowali o funkcjonalność jakiej oczekujesz.
Mając na uwadze powyższe zastanów się czy Ty sam byś komuś pomógł i poświęcił np. godzinę swojego czasu na rozwiązywanie czyjegoś problemu. Ponadto będziesz wiedział, że ten po drugiej stronie jest 'zielony' i nawet jeśli napiszesz to, to i tak nie będzie tego rozumiał (ja się sensu dydatycznego w tym dopatrzeć nie mogę).
P-18457
Scot
Temat założony przez niniejszego użytkownika
» 2010-06-30 23:05:24
Rozumiem , jednak napisałem tego posta z myślą iż może komuś będzie chciało się pobawić z tym troszkę , jednak nie kładłem w tym zbyt wielkich nadziei . Jeśli komuś jednak się zechce byłbym niezmiernie wdzięczny . Co do tablic to właśnie ich będę uczył się prawdopodobnie w tym tygodniu , wiem ze wydaje się wam to dziwne iż nie wiedzieć tego biorę się za allegro , jednak akurat takie mam usposobienie i pragnę uczyć się obu rzeczy na raz .
P-18462
maciejo
» 2010-08-10 22:29:46
Wydaje ci sie ze przeczytanie kawalku symfonii wystarczy a tu sie okazuje ze nie najpierw napisz kilka roznych rzeczy w konsoli , tak wiem ze allegro cie bardziej interesuje ale wiekszosci rzeczy nie zrozumiesz bez wiedzy o c++
P-20691
« 1 »
  Strona 1 z 1