Verfügbare Informationen zu "Grafikspielereien"
Qualität des Beitrags: Beteiligte Poster: Dirty Oerty - exbs Forum: Tutorials.at Forenbeschreibung: Programmierforum aus dem Unterforum: C / C++ Antworten: 7 Forum gestartet am: Mittwoch 19.04.2006 Sprache: deutsch Link zum Originaltopic: Grafikspielereien Letzte Antwort: vor 17 Jahren, 3 Monaten, 10 Tagen, 8 Stunden, 36 Minuten
Alle Beiträge und Antworten zu "Grafikspielereien"
Re: Grafikspielereien
Dirty Oerty - 13.01.2007, 18:52Grafikspielereien
tag,
ich hab mir gedacht, ich mach mal eine "kleine 2d grafikengine für DOS" :roll:
was ich mir gedacht hab:
man könnte eine funktion schreiben, der man eine "x - und y koordinate" gibt sowie einen char, die dann an die stelle des dos fensters den buchstaben schreibt.
also so der bildschirm:
00000
00000
00000
(0 steht für leer)
und so der char:
char* screen = new char [5] [3];
wenn man jetzt screen [2][3] auf 's' setzt, sollte das ja eigntl so aussehen:
00000
00000
0s000
schön, nur beschwehrt sich der compiler bei mir über einen 2 dimensionalen char. oder hat das was mit dem namen des char zu tun?
auf jedenfall hab ich die fct dann so umgebaut::
Code:
int paint_single_point ( int , int , char );
int paint_single_point (int x, int y, char a )
{
if (x>=25 || y>=10) {
return 0;
}
char* screen1 = new char[25];
char* screen2 = new char[25];
char* screen3 = new char[25];
char* screen4 = new char[25];
char* screen5 = new char[25];
char* screen6 = new char[25];
char* screen7 = new char[25];
char* screen8 = new char[25];
char* screen9 = new char[25];
char* screen10 = new char[25];
switch (y) {
case 0 : *(screen1 + y) = a; break;
case 1 : *(screen2 + y) = a; break;
case 2 : *(screen3 + y) = a; break;
case 3 : *(screen4 + y) = a; break;
case 4 : *(screen5 + y) = a; break;
case 5 : *(screen6 + y) = a; break;
case 6 : *(screen7 + y) = a; break;
case 7 : *(screen8 + y) = a; break;
case 8 : *(screen9 + y) = a; break;
case 9 : *(screen10 + y) = a; break;
default: *(screen10 + y) = a; break;
;
}
std::cout << screen1;
std::cout << "\n";
std::cout << screen2;
std::cout << "\n";
std::cout << screen3;
std::cout << "\n";
std::cout << screen4;
std::cout << "\n";
std::cout << screen5;
std::cout << "\n";
std::cout << screen6;
std::cout << "\n";
std::cout << screen7;
std::cout << "\n";
std::cout << screen8;
std::cout << "\n";
std::cout << screen9;
std::cout << "\n";
std::cout << screen10;
std::cout << "\n";
delete [] screen1;
delete [] screen2;
delete [] screen3;
delete [] screen4;
delete [] screen5;
delete [] screen6;
delete [] screen7;
delete [] screen8;
delete [] screen9;
delete [] screen10;
return 1;
}
ich bekomm wenn ich die fct aufruf gar nichts, bei wiederholten aufruf einen "stack overflow".
ich kapiers nich... :cry:
Re: Grafikspielereien
exbs - 14.01.2007, 03:33
sehe grad selbst ken fehler. wo is denn der 2 dimensionale array deklariet?
wenn du unter windows progs kann ich dir das hier anbieten:
Code: /* Funktion um den Courser an eine bestimme Stelle zu setzen (x, y) */
#include <windows.h>
void gotoxy(int x, int y)
{
COORD cur = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cur);
} zum zeichen eines einzellnen punktes bei (x;y) is das recht gut :).
Re: Grafikspielereien
Dirty Oerty - 14.01.2007, 23:03
nen 2dimensionalen array hat mir der compiler nich erlaubt :cry:
hm, aber dein code zeichnet ja nen pixel, ich wollte ja praktisch nur ne "matrix"
Re: Grafikspielereien
exbs - 15.01.2007, 00:57
Zitat: hm, aber dein code zeichnet ja nen pixel, ich wollte ja praktisch nur ne "matrix" also eigentlich setzt diese funktion den courser an eine stelle x ; y (wie ne matrix mit x ; y) und dort zeichnest du nen buchstaben oda sonnst was.praktisch so ähnlich wie deins.
warum hat er dir das nicht erlaubt ? eigentlich brauchst doch nur nen 2dim-array ... von mir aus [8][25] (kA wie groß die konsole genau ist) ... und dann gibts du den aus ... und wenn du dann an stelle [2][12] was zeichen willst musst du nir diese position im array mit (von mir aus) 1 beschriebn und dann dasa ganze ding wieda ausgeben. das ist aba sehr sehr in efizient. besser wäre es wirklich den courser an diese stelle zu setzten, es wird kein eizelnes pixel gezeichnet.
Re: Grafikspielereien
Dirty Oerty - 15.01.2007, 19:12
achso, es wird also nur ein buchstabe gezeichnet?
und wegen dem arry: also, erlauben tut ers mir immer noch nicht, aber nur mal so, welches wär den dann welche achse?
also:
00
00
00
00
char brabbel [2][4]
oder
char brabbel [4][2]
?
mfg
Re: Grafikspielereien
exbs - 15.01.2007, 22:05
00
00
00
00
= babbel [4][2];
interessante sache, die eigl net schwer sein sollt.
...
zu der funktion es wird kein buchstabe oda sonnst was gezeichet ... du setzt den courser nur da hin und dann kannst du dort mit von mir aus "printf("A");" ein ja zeichenen.
Re: Grafikspielereien
Dirty Oerty - 18.01.2007, 17:10
jo, ok, danke.
hab die funktion nun n paar mal verwendet.
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus dem Forum Tutorials.at
Blitz3D-Welten - gepostet von Dragorad am Dienstag 14.11.2006
Dev C++ ein Download-Problem - gepostet von mismis am Mittwoch 27.12.2006
Asseblercode? - gepostet von detewe89 am Freitag 01.06.2007
HTML/ PHP - gepostet von gs93 am Dienstag 17.10.2006
Mache ich den richtigen Kurs? - gepostet von Cypher am Samstag 03.03.2007
sich selbst aufrufendes Programm - gepostet von Moritz am Mittwoch 24.10.2007
Eigene Programme - gepostet von vpascal am Mittwoch 04.04.2007
In welchen Programmiersprachen programmiert ihr? - gepostet von ggspp am Montag 15.05.2006
c/c++? - gepostet von pYp am Montag 04.09.2006
Ähnliche Beiträge wie "Grafikspielereien"