Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Lerikson

Alter Hase

  • »Lerikson« ist der Autor dieses Themas

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

1

02.02.2009, 11:07

Wie bewegt man Figuren (Sprites)

Hi ich bins mal wieder, diesmal mit einer Frage die Google nicht beantworten wollte:

Ich habe folgenden Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <allegro.h>

int main(int argc, char **argv) {
    
    allegro_init();
    install_keyboard();
    
    set_color_depth(16);
    if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0) < 0) {
        allegro_message("Unable to set graphic mode!");
        exit(0);
    }
    
    for (int r = 0; r < 256; r++) {
        for (int g = 0; g < 256; g++) {
            putpixel(screen, r,g, makecol(r,g,0));
        }
    }
    
    while (!keypressed());
} END_OF_MAIN();


Der setzt erstmal den Vollbildmodus und zeichnet dann (langsam) ein Viereck auf den Schirm .
[Ich habe den Code aus einem Buch was ich grade lese]
Nun ist das Problem ,dass ich über die Tastatur die Richtungspfeile abfragen wollte und dann das Viereck nach links/rechts/oben/unten bewegen wollte aber ich habe keine Ahnung wie das geht

Kann mir also bitte jemand zeigen wie so was auszusehen hat ?
(ich dachte z.B. an sowas :

C-/C++-Quelltext

1
2
3
4
// .....

if ([KEY_UP])
{
 // und dort die anweisung wie: bewege nach oben...
)
Vielen dank im Voraus
Errare est humanum. -Windows ist menschlich ;-)

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

2

02.02.2009, 11:16

In deinem Programm fehlt die Spielschleife momentan noch komplett.
Du sagtest, dass du ein Buch zu dem Thema liest. Ich möchte dir nahe legen dort ein wenig weiter zu lesen, es sollte nicht lange dauern bis du die Mittel lernst um sowas zu realisieren.

Lerikson

Alter Hase

  • »Lerikson« ist der Autor dieses Themas

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

3

02.02.2009, 11:42

werde ich tun !

und dankeschön

ich dachte das müsste ich dort mit einfügen
Errare est humanum. -Windows ist menschlich ;-)

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

4

02.02.2009, 11:46

Ist das "Spieleprogrammierung" von Lennart Steinke?

Wenn ja, keine Angst. Da kommt noch mehr zu Animation, Bewegung, etc.

Lerikson

Alter Hase

  • »Lerikson« ist der Autor dieses Themas

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

5

02.02.2009, 12:36

ja genau das Buch ist es !
(ich habe damit angefangen und hatte aber keine Lust auf das Quizspiel , hatte aber Angst das ich nicht lern wie man Sachen bewegt (da ich mit MAPPY schon eine kleine Map gebaut hab und eher mal ein kleines Jump-Run-Spiel schreibn wollte-> dafür brauch ich dann nämlich das Bewegen von Sprites)

aber wenn du meinst das kommt noch...
...dann glaub ich dir (denn hier in dem Forum wissen anscheinend alle Alles über´s Spieleprogrammieren )
Errare est humanum. -Windows ist menschlich ;-)

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

6

02.02.2009, 14:20

Zitat von »"Lerikson"«

(denn hier in dem Forum wissen anscheinend alle Alles über´s Spieleprogrammieren )


Ich würde nicht so weit gehen und diese Behauptung unterschreiben ;)

Lerikson

Alter Hase

  • »Lerikson« ist der Autor dieses Themas

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

7

02.02.2009, 14:35

dann halt 90% xD
nein im Ernst hier wird einem eig immer gut geholfen
Errare est humanum. -Windows ist menschlich ;-)

Lerikson

Alter Hase

  • »Lerikson« ist der Autor dieses Themas

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

8

07.02.2009, 14:56

ich beschreib mein neues problem mal hier um nicht noch nen neuen Thread auf zu machen :
Ich habe jetz das Bild geladen und will es bei entsprechendem Tastendruck bewegen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <allegro.h>
using namespace std;

int set_graphic_mode()
{
    set_color_depth(16);
    if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0) >= 0)
    {
                                                return 1;
    }
    set_color_depth(15);
    if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0) >= 0)
    {
                                                return 1;
    }
    set_color_depth(16);
    if (set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0) >=0)
    {
                                              return 1;
    }
    return 0;
}
void move_up();
void move_down();
void move_right();
void move_left();

int main ()
{
    int x;
    int y;
    int dx;
    int dy;
    
    allegro_init();
    install_keyboard();
    
    if (!set_graphic_mode())
    {
                            allegro_message("Unable to set graphic mode !");
                            exit(0);
    }
    BITMAP *logo = load_bitmap("allegro.tga", NULL);
    
    acquire_screen();
    clear(screen);
    x = 0;
    y = 0;
    blit(logo, screen,
    0, 0,
    x, y,    
    logo->w, logo->h);
    release_screen();
    
    if (key[KEY_UP])
    {
         logo->move_up();
    }
    else if (key[KEY_DOWN])
    {
         logo->move_down();
    }
    else if (key[KEY_RIGHT])
    {
         logo->move_right();
    }
    else if (key[KEY_LEFT])
    {
         logo->move_left();
    
    
    
    
    while (!key[KEY_ESC]);
} END_OF_MAIN();
    
    void move_up()
    {
         while (key[KEY_UP])
         {
               y=y+1;
         }
    }
    
    void move_down()
    {
         while (key[KEY_DOWN])
         {
               y=y-1;
         }
    }
    
    void move_right()
    {
         while (key[KEY_RIGHT])
         {
               x=x+1;
         }
    }
    
    void move_left()
    {
         while (key[KEY_LEFT])
         {
               x=x-1
         }
    }

aber es kommen immer folgende Fehler und ich hab bisher nichts dazu gefunden:

C:\Dev-Cpp\main.cpp In function `int _mangled_main()':
57 C:\Dev-Cpp\main.cpp 'struct BITMAP' has no member named 'move_up'
[das gleiche bei move_down,left,right]
75 C:\Dev-Cpp\main.cpp a function-definition is not allowed here before '{' token
75 C:\Dev-Cpp\main.cpp expected `,' or `;' before '{' token
77 C:\Dev-Cpp\main.cpp expected primary-expression before "void"
77 C:\Dev-Cpp\main.cpp expected `;' before "void"
107 C:\Dev-Cpp\main.cpp expected `}' at end of input
C:\Dev-Cpp\Makefile.win [Build Error] [main.o] Error 1
ich habe wie immer keine Ahnung was ich nun schon wieder falsch mache ich hoffe ihr wisst wo der Fehler liegt!
Errare est humanum. -Windows ist menschlich ;-)

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

9

07.02.2009, 15:39

Argh, das sieht nach ganz schlimmen Codesalat aus ;)

Vielleicht wäre es besser, wenn du noch ein bisschen C++-Grundlagen paukst bevor du dich mit Allegro auseinandersetzt 8)

Lerikson

Alter Hase

  • »Lerikson« ist der Autor dieses Themas

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

10

07.02.2009, 16:00

das mit dem salat erscheint mir auch so aber

ich kapier nich was ich mit der BITMAP structure falsch gemacht hab....
Errare est humanum. -Windows ist menschlich ;-)

Werbeanzeige