Grafik in Spiel einblenden

Flo@pg

Grünschnabel
Ich wollte ein Script coden, dass bei einem Ereignis im Spiel eine Grafik(2 verschiedene) im oberen Eck des Bildschirms angezeigt , jedoch fehlt mir die Kenntnis wie das zu bewerkstelligen ist, bzw. was für Dinge beachtet werden müssen und welche Technik die simpelste hierfür ist, denn leider habe ich nichts gefunden bzw. weis ich nichtmal wie man soetwas genau nennt.
 
Hi,
Was hast du zur verfügung? MFC? gcc?
Was für ein Spiel?
Was für ein Event? Tastendruck, oder ein Spielereigniss wie Spielende/Halbzeit.
 
fifa2005 , winapi, und es soll bei karten was eingeblendet werden, habs bislang geschafft dann ein soundfile abzuspielen, aber ne "visuelle" ausgabe wäre besser :)
 
habs bislang geschafft dann ein soundfile abzuspielen
also hast du schonmal den Teil der die Karten erkennt.

wie immer gibts verschiedene Wege zum Ziel. Ich würde am Anfang den versuchen:
Das da malt einen roten Rechteck in die obere linke Ecke des Bilschirms:
Code:
HDC hScreenDC;  // DC zum Bildschirm
hSchreenDC = GetDC(NULL);
HBRUSH hBrush;    // DC zur Farbe des Rechtecks
LOGBRUSH hLogBrush;

hLogBrush.lbStyle = BS_SOLID;
hLogBrush.lbColor = RGB(0,0,255); // Rote Karte ;)
hLogBrush.lbHatch = NULL;
hBrush = CreateBrushIndirect( &hLogBrush );

SelectObject(hScreenDC, hBrush); // Wir malen mit unserer soeben erstellter roten Farbe

// Alles vertig Initialisiert, jetzt maln wir;

DWORD LastTime = GetTickCount(); // Zeit bekommen im Millisekunden
while(GetTickCount()-LastTime < 1000)  // 1 sekunde lang das da unten wiederholen
{
   Rectangle(hScreenDC, 0, 0, 100, 100); // Male unseres Rechteck.
   Sleep(1);  // Dem Spiel etwas CPU Leistung uberlassen;
}

DeleteObject(hBrush);
ReleaseDC(hScreenDC);
Das rote Rechteck wird eventuell etwas blinken (wärend des Spiels), aber sichtbar sein.
 
muss ich das in eine funktion packen oder kann ich das an die stelle schreiben wo zuvor die gelbe/rote karte sounddatei gespielt wird(da bekomme ich nen Fehler beim kompilieren) oder muss ich noch was includen fürs zeichnen? :)

Compiler-Fehler:
Code:
cardman2.cpp: In function `int main(int, char**)':
cardman2.cpp:83: error: `hSchreenDC' undeclared (first use this function)
cardman2.cpp:83: error: (Each undeclared identifier is reported only once for 
   each function it appears in.)
cardman2.cpp:89: warning: assignment to non-pointer type `LONG' from NULL
cardman2.cpp:89: warning: argument to non-pointer type `long int' from NULL
cardman2.cpp:104: error: cannot convert `HDC__*' to `HWND__*' for argument `1' 
   to `int ReleaseDC(HWND__*, HDC__*)'
 
Sorry, sind ein paar fehler reingerutscht :( , also an 2 Stellen muss du was korrigieren:
Code:
hScreenDC = GetDC(NULL);
Code:
ReleaseDC(NULL, hScreenDC);
die 2. zu korrigierende Zeile ist von mir aus auch zum Weglassen.
 
paar Fehlermeldungen kommen noch, wobei ich glaube das bis auf eine alle damit zusammenhängen das libaries gelinkt werden müssen(welche? :) )

Code:
cardman2.cpp: In function `int main(int, char**)':
cardman2.cpp:89: warning: assignment to non-pointer type `LONG' from NULL
cardman2.cpp:89: warning: argument to non-pointer type `long int' from NULL

Code:
cardman2.o(.text+0x33c):cardman2.cpp: undefined reference to `CreateBrushIndirect@4'
cardman2.o(.text+0x354):cardman2.cpp: undefined reference to `SelectObject@8'
cardman2.o(.text+0x39f):cardman2.cpp: undefined reference to `Rectangle@20'
cardman2.o(.text+0x3c0):cardman2.cpp: undefined reference to `DeleteObject@4'
 
Das wäre dann die gdi32.lib, habe nicht gemerkt VC++ hat diese lib schon von anfang an drin. Sorry wieder. Könnte man aber auch per :google: rausfinden ;)
 
naja hatte google mit den ganzen fehlermeldungen laufen lassen aber da kamen leider keine library names :(

und dieser Fehler kommt immer noch:

cardman2.cpp: In function `int main(int, char**)':
cardman2.cpp:91: warning: assignment to non-pointer type `LONG' from NULL
cardman2.cpp:91: warning: argument to non-pointer type `long int' from NULL

is nur ne Warnung geht aber trotzdem big big thx :)

jetzt müsst ich nur noch wissen wie ich ein config file mache wo ich
mode = 0; //0=audi,1=visuell, 2=audio und visuell
bestimmen kann und dann mode als variable verwenden kann(die config-datei sollte für den benutzer in nem texteditor editierbar sein :) )
 
Zuletzt bearbeitet:
Hi,
die Warnings heissen, dass du anstatt den NULL an der Stelle eine 0 schreiben sollst. Kannst ja mal versuchen.
Ansonsten falls du nur das eine einzustellen brauchst, kannst du diesen simplen Code benutzen, um mit fopen() aus der Datei die Moduszahl zu lesen:

Code:
#include <stdio.h>

FILE *file = fopen("config.ini", "rb"); // sucht auch im Ausgangsverzeichniss
if(!file)
{ /* config datei nicht gefunden! */
}
char Mode;//0=audi,1=visuell, 2=audio und visuell
fread(&Mode, 1, 1, file);
fclose(file);
Mode -= 0x30;
/* Mode ist jezt eingestellt*/
Falls die Datei "0" am anfang stehen hat, ist Mode = 0; Falls 1, Mode = 1; usw...
viel spass ;)
 
Zurück