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

1

08.07.2006, 17:57

Design in der Konsole

Ich habe versucht mal bissle Design in meine Konsolen anwendungen bringen. Da hab ich das hier zusammengeklöppelt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
cout << "--------------------------------------------------------------------" << endl;
    cout << "|          --Menue--                  |" << endl;
    cout << "|                                 |" << endl;
    cout << "|       Neues Spiel starten        - 1        |" << endl;
    cout << "|       Gespeichertes Spiel laden  - 2        |" << endl;
    cout << "|       Credits            - 3            |" << endl;
    cout << "|       Programm beenden       - 4        |" << endl;
    cout << "|                                 |" << endl;
    cout << "--------------------------------------------------------------------" << endl;

Das sieht hier so verschoben aus, aber in der Konsole siehts normal aus.
Ich möchte jetzt allerdings etwas damit es z.B. die Konsole komplett umrandet, bzw. auch Umrandung angezeigt wird obwohl das Programm durch ein cin oder sowas angehalten wird an einer stelle mitten in diesem Rahmen. Ist das möglich?

Anonymous

unregistriert

2

08.07.2006, 17:58

Such mal nach "conioex" hier im Board ;) Hab dazu damals was feines gepostet ;)

3

08.07.2006, 18:17

danke, damit kann ich shcon was schönes machen.
Hätte ich vorher gewusst wonach ich suchen soll hätte ich es gleich gemacht^^

Thunder Storm

Treue Seele

Beiträge: 297

Wohnort: fragt einfach per pm nix da ;)

Beruf: Ausbildung (Technischer Assistent für Software Technologie)

  • Private Nachricht senden

4

10.07.2006, 09:26

hm hab auch noch 3 sachen muss ich gucken. schreibs hier später rein.
Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, daß Sie sie äußern dürfen.

Voltaire

Thunder Storm

Treue Seele

Beiträge: 297

Wohnort: fragt einfach per pm nix da ;)

Beruf: Ausbildung (Technischer Assistent für Software Technologie)

  • Private Nachricht senden

5

12.07.2006, 11:24

hier parr funtionen die noch von meiner ausbildung stammen. also quasi borland conio. abhilfe solte schaffen das du dir die improved console saugst. einfach mal bei googel eintippen. teils teils is davon schon was in nixda s conioex enthalten manche sachen gibbet da aber glaub nich so.

ach so da is keine notation drinne. das ganze sollte eigentlich nicht meine hände verlassen deswegen bissel blöde variablen namen usw. frei nach dem motto funzt. wie is egal. und das hintergrundbild erstellen is nicht von mir sondern von einem unserer autoren. wem genau weiss ich nicht mehr. der code war aber öffentlich zugänglich als ich mir den mal gezogen hatte also is posten denk ich ok. mal abgesehen da von steht der auch schon an anderer stelle hier im forum.

Erstellen eines farbigen Fensters in der Console :

C-/C++-Quelltext

1
2
3
4
void fe(int x1,int y1,int x2,int y2,int farbe)
{
window(x1,y1,x2,y2);textbackground(farbe);clrscr();
}


Erstellen eines Hintergrundbildes in der Console :

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void hintergrundbilderstellen (char *cpcFilePath, int iPosX, int iPosY)
{
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,cpcFilePath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
BITMAP bmp;
GetObject(hBitmap,sizeof(bmp),&bmp);
HWND hWnd = FindWindow("ConsoleWindowClass",NULL);
HDC hDC = GetDC(hWnd);
HDC hBitmapDC = CreateCompatibleDC(hDC);
SelectObject(hBitmapDC,hBitmap);
BitBlt(hDC,iPosX,iPosY,bmp.bmHeight,bmp.bmWidth,hBitmapDC,0,0,SRCCOPY);
//Aufräumen

DeleteObject(hBitmap);
ReleaseDC(hWnd,hBitmapDC);
ReleaseDC(hWnd,hDC);
}


Erstellen eines Rahmens in der Console (LIGHTGREEN is die Farbe also nach belieben ändern) :

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
void ra(int oz, int uz, int ls, int rs,int farbe,int art)
{
textcolor (farbe);
//Doppelrahmen

if (art==1)
{
int punkt;
for(punkt=oz;punkt<=uz;punkt++){gotoxy(rs,punkt);cprintf ("º");}
for(punkt=oz;punkt<=uz;punkt++){gotoxy(ls,punkt);cprintf ("º");}
for(punkt=ls;punkt<=rs;punkt++){gotoxy(punkt,oz);cprintf ("Í");}
for(punkt=ls;punkt<=rs;punkt++){gotoxy(punkt,uz);cprintf ("Í");}
gotoxy(ls,oz);cprintf ("É");
gotoxy(rs,oz);cprintf ("»");
gotoxy(ls,uz);cprintf ("È");
gotoxy(rs,uz);cprintf ("¼");
textcolor (LIGHTGREEN);
}
// Einfacher Rahmen

if (art==2)
{
int punkt;
for(punkt=oz;punkt<=uz;punkt++){gotoxy(rs,punkt);cprintf ("³");}
for(punkt=oz;punkt<=uz;punkt++){gotoxy(ls,punkt);cprintf ("³");}
for(punkt=ls;punkt<=rs;punkt++){gotoxy(punkt,oz);cprintf ("Ä");}
for(punkt=ls;punkt<=rs;punkt++){gotoxy(punkt,uz);cprintf ("Ä");}
gotoxy(ls,oz);cprintf ("Ú");
gotoxy(rs,oz);cprintf ("¿");
gotoxy(ls,uz);cprintf ("À");
gotoxy(rs,uz);cprintf ("Ù");
textcolor (LIGHTGREEN);
}
}


Erstellen eines Strichs in der Console :

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
void strich(int an,int ri,int farbe,int x55,int y55)
{
textcolor (farbe);
int loop22=1;
//Vertikal

if (ri==2)
{
while(loop22<=an)
{
gotoxy (x55,y55);
cprintf("³");
y55++;
loop22++;
}
}
//Horizontal

if (ri==1)
{
while(loop22<=an)
{
gotoxy (x55,y55);cprintf("Ä");
x55++;
loop22++;
}
}
textcolor (LIGHTGREEN);
}



ps : vieleicht FAQ draus machen damit solche fragen nich noch 20 mal kommen?

Edit : ach so man >>kann<< mit hilfe von threads auch mehrere bewegliche objekte in der console schaffen also z.b. nen kleines ascii video wo ne band spielt oder sowas. hab ich selber mal gemacht allerdings muss man bei der aktion auf seine variablen und gotoxy aufpassen wie hund sonst kommt nur murks raus.

Allegro solltet ihr euch auch mal anschauen zwecks grafik in console.

Ich bin schon fast der festen überzeugung davon das nixda mit dem kopfschütteln wird wen er sich das anguckt XD vermutlich sitzt er grad dran und passt das grad seinen bedürfnissen an XD
Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, daß Sie sie äußern dürfen.

Voltaire

6

12.07.2006, 11:53

Nein... die Funktion zum setzen eines anderen BGs ist Fehlerbehaftet... mach mal 2 Consolen auf und teste den dann ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Thunder Storm

Treue Seele

Beiträge: 297

Wohnort: fragt einfach per pm nix da ;)

Beruf: Ausbildung (Technischer Assistent für Software Technologie)

  • Private Nachricht senden

7

12.07.2006, 11:56

meinst das hbild oder das fenster? hab das nie mit 2 consolen getestet. wo zu auch für nen game reicht eine auch völlig zu.
Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, daß Sie sie äußern dürfen.

Voltaire

8

12.07.2006, 13:17

Hmm jo aber sobald der User 2 Konsolen offen hat, sollteste mit der Funktion zum setzen des bg bildes arge Probleme bekommen...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Thunder Storm

Treue Seele

Beiträge: 297

Wohnort: fragt einfach per pm nix da ;)

Beruf: Ausbildung (Technischer Assistent für Software Technologie)

  • Private Nachricht senden

9

12.07.2006, 13:26

naja kann man sicher auch no speziel auf ein console fenster festlegen. müsst man sich nu halt mehr mit beschäftigen.
Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, daß Sie sie äußern dürfen.

Voltaire

Anonymous

unregistriert

10

12.07.2006, 19:02

Thunder Storm
Also nimms mir nicht übel, aber der Code schießt den Vogel ab :lol:

Nehmen wir mal Code 1:

C-/C++-Quelltext

1
2
3
4
void fe(int x1,int y1,int x2,int y2,int farbe) 
{ 
window(x1,y1,x2,y2);textbackground(farbe);clrscr(); 
}

Ich als "Depp" frage mich erstmal: "WTF is x1,y1,x2 und y2?" nenns doch bitte wenigstens x, y, width, height. Kommt jeder mit klar.

Dazu: never use int! Dazu: unsigned. Hast du schon mal negative Positionsangaben in der Console gesehen? ich nicht ;) Das selbe gilt auch für Dimensionen. Die sind immer Positiv.

int farbe. auch hier: Gibt es negative Farben?! Also unsigned.

Was für ne Funktion ist "window"? Kenne ich nicht, muß also Borland sein - hat net jeder. Dazu sieht der Code unübersichtlich aus und keinerlei Sicherheit ist enthalten. Gefährlich :roll: Und was bedeutet "fe"? "FEromone"? :lol: Bitte aussagekräftige Funktionsnamen.


Thema Bilder in der Console:
Also ich weiß ja nicht was jemanden zu so einer "krankheit" verleitet. Wenn man Grafik haben will, nimmt man ein "Echtes Fenster". Vorallem: Was passiert wenn die Console neu gezeichnet werden soll? Bild laden, neu Blitten usw.? Ich sag nur: DAAP - Die Arme Arme Performance.

Auch fehlen hier die Sicherheitsabfragen. Was ist wenn die Datei nicht existiert? Dann benutzt Du einen ZeroPointer! Das knallt einem User die letzte Oma von den Socken. Gefährlich.

Auch das mit dem FindWindow. Schön und gut, was ist wenn es mehrere Konsolenfenster im augenblick gibt? Mehrdeutig --> Gefährlich.

"ra". Klingt wie der Sonnengott. Dazu sind die Parameter sowie der Funktionsname irgendwo "konfus". Auch das ganze setzen von gotoxy usw. ist auch nicht gerade das wahre. Hier kann ma so viel Optimieren!! Ich kriege es sogar in 8 Codezeilen hin ;)

Dazu: Wo ist die Sicherheit?

Und das mit dem Strich: Oje oje oje.... Wenn ich die Parameter schon sehe, oh gott.

Also nimm es mir nicht übel, ich habe gerade 2 Fragen an Dich:
1. Sind alle Codes von Dir? Kommt mir nicht so vor, da eines Konfuser ist als das andere :roll:
2. Möchtest Du daraus wirklich eine FAQ mache, mit DIESEM Code? Also ich persönlich nicht, da es schon fast Zeitbomben sind. Also ich würd den Code lieber ordentlich machen und nicht <conio.h> benutzen.

- Patrick, der darüber nicht mehr den Kopfschütteln kann. ;)

Werbeanzeige