Tastatur !!

Imod

Mitglied
Hey,

Ich hab folgendes Problem,
ich programmiert jetzt schon seit ner weile c++.
Kann schleifen, Zeiger unsw..

Mein Problem ist ich will eine einfache version von Snakeprogrammiern.

Einfach ein Strich (bsp "-") in der Console mit der tastatur in einem Spielfeld bewegen zu können.

also ein Viereckiger Kasten in dem man ein Element frei bewegen kann.

Ich weiss nicht wie ich dass machen soll bitte um eure Hielfe.

Ich benütze Dev c++,
Windows XP,
Und lern aus einem Buch von Jessy Liberty,

Falls ihr noch mehr Infos braucht bitte schrieben.

Thx im vorraus.

Mfg Domi

(Wäre auch über "Deutsche" Tutoritals erfreut.)

Sorry wegs Tippfehler
 
Mein jetziger code:

PHP:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <windows.h>

using namespace std;

char Auswahl, Zeichen;

void gotoxy(int x,int y)
{
   COORD cur={x,y};
   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),cur);
}


int main(void)
{
int a ;
int b ;
int wahl;
for (;;)
{
a++;
b++;
Zeichen = 5;
gotoxy(a, b);
cout << Zeichen;
}

cin.get();
}

wer gibt ein Zeichen aus und wiederhohlt es immer eins weiter drüben.

Ich will aber dass er immer das leiche zeichen nimmt und das dann darüber cordiniert

MFg Domi
 
Also, ich hab snake schon für 2 Spieler hingekrigt^^

Und wenn ich ehrlich bin, dein code ist, naja. wolln wa mal nicht weiter darüber reden.
Jeder fängt klein an. (Ja. selbst ich^^).

Also. zunächst bindeste mal conio.h (#include <conio.h> ein.
dann hast de schonmal getch(),getch() wartet auf einen tastendruck und liest ihn ein.
Beispiel:
C++:
#include <iostream>
#include <conio.h>

using namespace std;

int main() {

cout<<"Bitte etwas eingeben"<<endl;
char c;

c=getch();//getch wartet auf tastendruck und gibt den wet c

cout<<"\n\n\n\nSie haben "<<c<<" eingegeben."<<endl;
getch();//Hier wartet getch NUR auf einen tastendruck.

return 0;
}

Wenn de das geschnallt hast, machen wir mal mit EINEM beweglichen Objekt weiter.
Da die Aktuallisierung ja nicht Flakkern soll, benutzen wir eine Funktuion die den "Coursor" an eine Stelle setzt. Die Steuerung setze ich hierbei auf wasd, ad Pfeiltasten etrwas schwieriger sind.

C++:
#include <windows.h> //wird für Textposition benötigt
#include <iostream>
#include <conio.h>

using namespace std;

void Textposition(int x, int y)
    {
        COORD coordScreen;
        coordScreen.X = x;
        coordScreen.Y = y;
        SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), coordScreen);
    }

int main () {

int x=0;//xposition
int y=0;//yposition

int ly=0;//alte position
int lx=0;//alte position
char c='\0';

while((c=getch())!=27){//Solange du nicht Esc drückst erhält c den Wert der Taste

switch(c){

case 'a' : ly=y;lx=x;x==0?x=79:--x;break;
case 'd' : ly=y;lx=x;x==79?x=1:++x;break;

case 'w' : lx=x;ly=y;y==0?y=24:--y;break;
case 's' : lx=x;ly=y;y==24?y=0:++y;break;

}

Textposition(lx,ly);cout<<" "<<flush;//flush leert den Buffer und gibt ihn aus

Textposition(x,y);cout<<"#"<<flush;

}

}

da haste de ne art Coursor.
vll hilfst dir ja weiter.
wenn sich automatisch bewegen soll, würde ich schon zu threads greifen.
 
Zuletzt bearbeitet:
thx hat mir sehr weiter geholfen.

Dann kann ich jetzt endlich weiter machen in meinem Game ^^

mal schaun obs was wird.

P.s Hast du schon ein Spiel geschrieben?


Mfg Domi
 
Jo.

Einmal Breakout (kann ich mit und ohne Threads kompilieren. nur beim Levelwecfhsle scheiterts)

Und einmal Snake (leider mit veralteter , bzw. nicht ganz so huter anzeigetechnik, aber es geht) für ein und 2 Spieler sowie Farbwecchsel und geschwindigkeitsregelung per Tastatur.

Das läuft eigntlich ganz gut.

aber, den Code werde ich nicht reinstellen, da es

a) sehr viel Arbeit war und
b) weil es in viele Haedder aufgeteilt ist und
c) weil ich dadrin einen selbstgeschriebenen Haeder verwende, der mir ein bischen was erleichhtertb und in dem ich aus dem Internet gefunenes abspeicher und es somit nur noch einbinden brauche.

Aber an Packman hab ich mich bisher noch nicht rangesetzt.

Aber Snake und reakout haben genug Arbeit gemacht.

Und wie gesagt. Am besten nicht mit cls Arbeiten, sondern halt einfach überschreiben^^
 
Zuletzt bearbeitet:
Zurück