Hey
Bin neu hier und hab gleich ne Frage q:
Also die Programmiersprache ist C++ und ich hab ein pseudo-Konsolengame gemacht, das später evtl. auch noch ausgebaut wird. Wollte eig. nur mal sehen, wie man in C++ i-welche ASCII-Zeichen in nem Char-Array bewegt.
Achja:
Entwicklungsumgebung: Dec-C++ (und der dazugehörige Compiler)
OS: Windows
Also, hier erstmal der Code: (Und habt Nachsicht, ich programmiere erst seid kurzem c++)
Steuerung ist WASD
So: mein Problem ist jetzt, dass ich das Array "Feld" bei jedem Tastendruck komplett erneut ausgeben muss, damit sich das Bild aktualisiert. Aber deswegen is das Spiel auch ziemlich langsam und in der Konsole sieht man oft ein "flackern" (also bei mir auf jedenfall ).
Meine Frage wär jetzt, wie man das ganze beschleunigen könnte, dass man das Array nicht immer neu laden muss.
Wär nett, wenn jmd. Bescheid weiß
slightlyNERD
Bin neu hier und hab gleich ne Frage q:
Also die Programmiersprache ist C++ und ich hab ein pseudo-Konsolengame gemacht, das später evtl. auch noch ausgebaut wird. Wollte eig. nur mal sehen, wie man in C++ i-welche ASCII-Zeichen in nem Char-Array bewegt.
Achja:
Entwicklungsumgebung: Dec-C++ (und der dazugehörige Compiler)
OS: Windows
Also, hier erstmal der Code: (Und habt Nachsicht, ich programmiere erst seid kurzem c++)
Code:
#include <windows.h>
#include <Winuser.h>
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
string Ende(){
system("cls");
cout << "Gewonnen" << endl;
system("PAUSE");
return 0;
};
int main()
{
//Feldgroesse:
int y = 20;
int x = 40;
char Feld[y][x];
//Feld füllen:
for (int j=0; j<y; ++j){
for (int i=0; i<x; ++i){
Feld[j][i] = '.';
}
}
for (int k=0; k<y; ++k){
Feld[k][x-1] = '\0';
}
//Startposition festlegen
int Sy = 1;
int Sx = 1;
Feld[Sy][Sx] = 'o';
//Ziel festlegen
Feld[15][30] = 'Z';
//Feld ausgeben
for (int z=0; z<y; ++z){
cout << Feld[z] << endl;
}
while(1)
{
//Verhindert CPU Auslastung 5ms sleep
Sleep(5);
//Tasten einlesen
for(int i = 8; i < 191; i++)
{
if(GetAsyncKeyState(i)&1 ==1)
{
if (i == 87){
//Taste "W" gedrückt
if (Sy != 0){
if (Feld[Sy-1][Sx] == 'Z'){
Ende();
}
Feld[Sy-1][Sx] = 'o';
Feld[Sy][Sx] = '.';
Sy = Sy -1;
//neues Feld ausgeben
system("cls");
for (int z=0; z<y; ++z){
cout << Feld[z] << endl;
}
}
}
if (i == 65) {
//Taste "A" gedrückt
if (Sx != 0){
if (Feld[Sy][Sx-1] == 'Z'){
Ende();
}
Feld[Sy][Sx-1] = 'o';
Feld[Sy][Sx] = '.';
Sx = Sx -1;
//neues Feld ausgeben
system("cls");
for (int z=0; z<y; ++z){
cout << Feld[z] << endl;
}
}
}
if (i == 83){
//Taste "S" gedrückt
if(Sy != y-1) {
if (Feld[Sy+1][Sx] == 'Z'){
Ende();
}
Feld[Sy+1][Sx] = 'o';
Feld[Sy][Sx] = '.';
Sy = Sy +1;
//neues Feld ausgeben
system("cls");
for (int z=0; z<y; ++z){
cout << Feld[z] << endl;
}
}
}
if (i == 68) {
//Taste "D" gedrückt
if(Sx != x-2){
if (Feld[Sy][Sx+1] == 'Z'){
Ende();
}
Feld[Sy][Sx+1] = 'o';
Feld[Sy][Sx] = '.';
Sx = Sx +1;
//neues Feld ausgeben
system("cls");
for (int z=0; z<y; ++z){
cout << Feld[z] << endl;
}
}
}
}
}
}
}
Steuerung ist WASD
So: mein Problem ist jetzt, dass ich das Array "Feld" bei jedem Tastendruck komplett erneut ausgeben muss, damit sich das Bild aktualisiert. Aber deswegen is das Spiel auch ziemlich langsam und in der Konsole sieht man oft ein "flackern" (also bei mir auf jedenfall ).
Meine Frage wär jetzt, wie man das ganze beschleunigen könnte, dass man das Array nicht immer neu laden muss.
Wär nett, wenn jmd. Bescheid weiß
slightlyNERD