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

Robin

Frischling

  • »Robin« ist der Autor dieses Themas

Beiträge: 13

Beruf: Schüler

  • Private Nachricht senden

1

22.03.2005, 15:02

Pfeiltasten in C++ (DOS) ?

Hallo,

ich bin noch seeeeehhhhhhhhrrrrrrr neu hie im Forum und da ich
leider gerade nicht genug Geld habe, um mir das Buch

C++ für Spieleprogrammierer

zu kaufen :crying: (Hey! Ich bin erst 13 einhalb :) ) wollte ich
fragen, ob mir jemand schreiben kann, wie man bei einem
DOS-Spiel die Figur bewegen lassen kann (per Pfeiltasten :) )

Die C++Version 6.0 habe ich schon. Kann mir biiiitttttteeeee jemand
helfen? :rolleyes: :rolleyes: :rolleyes:

Ach ja, in normaler DOS-Programmierung kenne ich mich
(denke ich :) ) schon gut aus. Also muss mir keiner hier
erklären, was ein Array ist, was #include - Dateien sind usw.

Danke schonmal im Vorraus

hi robin
Es wäre hilfreich für die übersicht im Forum etwas aussagekräftigere Threadüberschriften zu verwenden (Habe diese geändert). Ausserdem solltest du mehr mit den i, t, e, h, r, und ! Tasten sparen. Hier hilft dir auch jeder ohne Dramaturgie und deine Tastatur lebt länger. ;)

cu Abrexxes

2

22.03.2005, 20:53

#include <conio.h>

Hallo Robin!
Um beispielsweise auf die Pfeiltasten reagieren zu können, brauchst du zuerst einmal die Funktion getch () von der <conio.h>. Man kann es auch mit der <windows.h> machen, ich zeige jetzt aber diese Variante.

Hier meine Funktion:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
int GetKey ()
{
    int Key = getch ();
    if (Key == 0 || Key == 224)
    {
        Key = 256 + getch ();
    }
    return Key;
}

Sie gibt einen bestimmten int-Wert für die gedrückte Taste zurück (zum Beispiel 13 für Return oder 27 für Escape).


Und so etwa kannst du sie benutzen:

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
#include <conio.h>
#include <iostream>

using namespace std;

int GetKey ()
{
    int Key = getch ();
    if (Key == 0 || Key == 224)
    {
        Key = 256 + getch ();
    }
    return Key;
}

int main ()
{
    int Key = 0;

    while (Key != 27)   // solange nicht Escape gedrückt wurde

    {
        Key = GetKey ();

        switch (Key)
        {
        case 328:   // Pfeiltaste nach oben

            {
                cout << "Up!" << endl;
            }
            break;

        case 336:   // Pfeiltaste nach unten

            {
                cout << "Down!" << endl;
            }
            break;

       
        case 333:   // Pfeiltaste nach rechts

            {
                cout << "Right!" << endl;
            }
            break;

        case 331:   // Pfeiltaste nach links

            {
                cout << "Left!" << endl;
            }
            break;

        default:   // Taste (noch) nicht definiert

            {
                cout << "  >>>" << Key << endl;
            }
        }
    }

    return 0;
}


Allerdings musst du beachten, dass es sich bei der <conio.h> nicht um eine ANSI-C++-Headerdatei handelt!

Jetzt solltest du es auch schaffen, deine Funktion zum Bewegen der Figur zu programmieren.

Ich hoffe, das hilft dir weiter!


Benjamin

ähM_key

Frischling

Beiträge: 49

Beruf: Schüler

  • Private Nachricht senden

3

25.03.2005, 11:59

Er hat leider nicht geschrieben welches OS er nutzt. Unter NT und XP zum Beispiel bekommt man die ANSI Treiber nicht geladen, weswegen z.B. Macros wie LOCATE (#define LOCATE(z,s) (cout <<"\033["<< z <<';'<< s <<'H')) nicht funktionieren. Ich hatte mal ne Lösung über WinAPI gefunden, die war aber ultra langsam...

Robin

Frischling

  • »Robin« ist der Autor dieses Themas

Beiträge: 13

Beruf: Schüler

  • Private Nachricht senden

4

02.05.2005, 19:19

Danke. Die funktion hat geholfen. Und ich benutze XP.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

02.05.2005, 19:35

Diarötisch würde es glaube ich auch mit GetAsyncKeyState gehen

Anonymous

unregistriert

6

31.05.2005, 12:55

Nur so nebenbei

Mal so nebenbei Robin,

dickes Kompliment an dich, dass du in diesem Alter schon C++ programmieren kannst :)

Ich selber habe mit 12-13 erst QBasic gekonnt *g* ;)

Sicaine

unregistriert

7

31.05.2005, 19:11

Mit 13 kannste dir kein Buch leisten willst aber programmieren lernen? Schlechter Anfang. Wenn die Grundlagen da sind fang jetzt an dazu gehört auch ien gutes BUch :P

Vorallem is das keine Dos-Programmierung ;-)

8

31.05.2005, 20:23

DOS-Programmierung mag ja ganz gut sein (wie wärs mit nem RPG?). Die alten Spiele haben schon so was Tolles... - da kommts halt mehr aufs Spielprinzip an als auf die Grafik.

Aber ein Tipp von mir: SPAREN!

Wenn du C++Noob bist und ein Anfängerbuch brauchst, gibts da so welche (ich glaub rororo-Verlag) für 10 €, ziemlich gut (kleines Buch, Taschenbuchformat).

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

9

31.05.2005, 20:30

ja du brauchst besonders am Anfang unterstützung. Ein Buch musses da aber nicht unbdeingt sein, schau mal nach Tutorials im Netz. Oder meld dich in einer Community (wie dieser :) - ach haste ja schon ) an. Es gibt viele Wege nach Rom! :huhu:

DrthM2001

Alter Hase

Beiträge: 721

Wohnort: Karlsruhe

  • Private Nachricht senden

10

31.05.2005, 20:45

Zitat

dickes Kompliment an dich, dass du in diesem Alter schon C++ programmieren kannst


[editmodeabrexxes]
[Angebmode]
Ich war schon mit 11 dabei (C Dos-Textgames ) :P

[/Angebmode]
spammer!
[/editemodeabrexxes]

Werbeanzeige