 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 20.12.2005, 18:18 Titel: |
|
|
Bei OOP sölltest du eine Sprite Klasse machen und die dann in deine Gebäude Klase vererben aber so wie du es machst ist es sicher noch feiner.
Die Kasse kannst du dann auch in deien Einheiten und Gelände Tiles(falls du es mit Texturen machst)Klassen benutzten. _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 20.12.2005, 18:56 Titel: |
|
|
fast hawk hat Folgendes geschrieben: | Bei OOP sölltest du eine Sprite Klasse machen und die dann in deine Gebäude Klase vererben aber so wie du es machst ist es sicher noch feiner. |
Nope, an dieser Stelle ist eine 'Hat-Beziehung' angebracht, da ein Gebäude kein Sprite 'ist', sondern lediglich Sprites zur optischen Repräsentierung nutzt. |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 20.12.2005, 19:03 Titel: |
|
|
GreveN hat Folgendes geschrieben: | fast hawk hat Folgendes geschrieben: | Bei OOP sölltest du eine Sprite Klasse machen und die dann in deine Gebäude Klase vererben aber so wie du es machst ist es sicher noch feiner. |
Nope, an dieser Stelle ist eine 'Hat-Beziehung' angebracht, da ein Gebäude kein Sprite 'ist', sondern lediglich Sprites zur optischen Repräsentierung nutzt. |
Layering
@GreveN
haste das aus "Spieleprogrammierung Gems"? |
|
Nach oben |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 20.12.2005, 19:22 Titel: |
|
|
Ne aber ein Gebäude braucht ein Sprite(oder ähnliches)
um sichar zu werden so braucht jedes gebäude eigentlich auch ein Sprite.  _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
 |
OLiver Super JLI'ler

Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 20.12.2005, 19:34 Titel: |
|
|
fast hawk hat Folgendes geschrieben: | Ne aber ein Gebäude braucht ein Sprite(oder ähnliches)
um sichar zu werden so braucht jedes gebäude eigentlich auch ein Sprite.  |
Aber ein Gebäude ist kein Sprite, deswegen kannst du auch keine globale Vererbung benutzen. Du kannst ja nicht das V und A von E-V-A gleichsetzen.[/b] _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 20.12.2005, 20:14 Titel: |
|
|
Jetzt bin ich ein bischen verwirrt, kann ich das nun doch nicht so machen wie ih will? |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 20.12.2005, 20:39 Titel: |
|
|
Vane hat Folgendes geschrieben: | Jetzt bin ich ein bischen verwirrt, kann ich das nun doch nicht so machen wie ih will? |
natürlich, hier zwingt dich keiner  |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 20.12.2005, 20:49 Titel: |
|
|
ich würde gerne noch etwas wissen und zwar wie kriege ich das hin das meine anwendung im Vollbildmodus läuft, ich programmiere das spiel Mit Microsoft Visual C++ und DirectX
bin gerade am verzweifeln |
|
Nach oben |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 20.12.2005, 20:53 Titel: |
|
|
du must in der DirectX initizialotion den Wert PParam.Windowed auf FALSE setzen. _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 20.12.2005, 21:09 Titel: |
|
|
also bei mir wenn ich das programm starte, stürzt es ab der bleibt immer bei der Funktion BeginScene() stehen..
Warum? |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 20.12.2005, 21:44 Titel: |
|
|
Vane hat Folgendes geschrieben: | also bei mir wenn ich das programm starte, stürzt es ab der bleibt immer bei der Funktion BeginScene() stehen..
Warum? |
das kann viele Gründe haben, poste ma den code dieser Funtkion und deiner Init-Funktion |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 20.12.2005, 21:48 Titel: |
|
|
Einmal die init
CPP: | int InitD3D (int resWidth, int resHeight, D3DFORMAT resFormat, HWND hWnd, BOOL bWindowedMode)
{
HRESULT hr;
//Erstellt das direct 3d objekt
d3d = Direct3DCreate9(D3D_SDK_VERSION);
ZeroMemory (&d3dCaps, sizeof(d3dCaps));
if (FAILED(d3d->GetDeviceCaps (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &d3dCaps)))
return FALSE;
ZeroMemory(&d3dPresent,sizeof(d3dPresent));
d3dPresent.SwapEffect = D3DSWAPEFFECT_FLIP;
d3dPresent.hDeviceWindow = hWnd;
d3dPresent.BackBufferCount = 1;
//Check if windowed
if (bWindowedMode)
{
D3DDISPLAYMODE d3ddm;
RECT rWindow;
//Get display mode
d3d->GetAdapterDisplayMode (D3DADAPTER_DEFAULT, &d3ddm);
//Get window bounds
GetClientRect (hWnd, &rWindow);
//Setup screen dimensions
resWidth = rWindow.right - rWindow.left;
resHeight = rWindow.bottom - rWindow.top;
//Setup backbuffer
d3dPresent.Windowed = true;
d3dPresent.BackBufferFormat = d3ddm.Format;
d3dPresent.BackBufferWidth = rWindow.right - rWindow.left;
d3dPresent.BackBufferHeight = rWindow.bottom - rWindow.top;
}
else
{
d3dPresent.Windowed = false;
d3dPresent.BackBufferWidth = resWidth;
d3dPresent.BackBufferHeight = resHeight;
d3dPresent.BackBufferFormat = resFormat;
}
//Check if hardware vertex processing is available
if (d3dCaps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
{
//Create device with hardware vertex processing
hr = d3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL, hWnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dPresent, &d3dDevice);
}
else
{
//Create device with software vertex processing
hr = d3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dPresent, &d3dDevice);
}
//Make sure device was created
if (FAILED(hr))
return FALSE;
//Setup Direct3D for rendering
InitRendering (resWidth, resHeight);
return TRUE;
}
|
und
CPP: | int BeginDrawing()
{
return d3dDevice->BeginScene();
}
|
Hier bitte.... |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 20.12.2005, 22:02 Titel: |
|
|
also
1. nimm lieber beim nächsten mal c++-tags und net nur code-tags
2. der einfache CPP: | int BeginDrawing()
{
return d3dDevice->BeginScene();
} | Aufruf sagt uns nix, gib ma die zeilen zw. dem beginScene und endScene
EDIT:
3. den InitRendering() auch ma bitte
4. und guck ma, ob du Windows das gleiche bWindowedMode wie DX gibst |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 20.12.2005, 22:05 Titel: |
|
|
verstehe ich nicht ganz? welchen code braucht ihr denn??
CPP: | void InitRendering (int resWidth, int resHeight)
{
D3DXMATRIX matOrtho;
D3DXMATRIX matIdentity;
//Setup an orthographic perspective
D3DXMatrixOrthoLH (&matOrtho, (float) resWidth, (float) resHeight, 1.0f, 10.0f);
D3DXMatrixIdentity (&matIdentity);
d3dDevice->SetTransform (D3DTS_PROJECTION, &matOrtho);
d3dDevice->SetTransform (D3DTS_VIEW, &matIdentity);
d3dDevice->SetTransform (D3DTS_WORLD, &matIdentity);
//Erstellt ein Vertex Buffer
d3dDevice->CreateVertexBuffer(4 * sizeof(TLVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_TLVERTEX, D3DPOOL_MANAGED, &vertexBuffer, NULL);
//Die Funktion SetStreamSource verbindet den Vertex Buffer mit dem Schnitstellen Daten Strom
//Dient zur versorgung mit daten der Verarbeitung Funktionen
d3dDevice->SetStreamSource(0, vertexBuffer, 0, sizeof(TLVERTEX));
//Erstellt ein Aufstappel Vertex Buffer
d3dDevice->CreateVertexBuffer(BATCH_BUFFER_SIZE * sizeof(TLVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_TLVERTEX, D3DPOOL_MANAGED, &vertexBatchBuffer, NULL);
//Erstellt ein Index Buffer
d3dDevice->CreateIndexBuffer (BATCH_BUFFER_SIZE * 3, D3DUSAGE_WRITEONLY, D3DFMT_INDEX16, D3DPOOL_MANAGED, &indexBatchBuffer, NULL);
d3dDevice->SetIndices(indexBatchBuffer);
numBatchVertices = 0;
//Der Index Buffer wird gefüllt
FillIndexBuffer ();
//Setup vertex format
d3dDevice->SetVertexShader(NULL);
d3dDevice->SetFVF (D3DFVF_TLVERTEX);
//Set render states
d3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
d3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
d3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
d3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
d3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
}
|
CPP: | ClearBuffer();
BeginDrawing();
BeginBatchDrawing(texture);
DrawTile();
EndBatchDrawing ();
EndDrawing ();
Present ();
|
ich hoffe das hilft |
|
Nach oben |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 21.12.2005, 12:53 Titel: |
|
|
OLiver hat Folgendes geschrieben: | fast hawk hat Folgendes geschrieben: | Ne aber ein Gebäude braucht ein Sprite(oder ähnliches)
um sichar zu werden so braucht jedes gebäude eigentlich auch ein Sprite.  |
Aber ein Gebäude ist kein Sprite, deswegen kannst du auch keine globale Vererbung benutzen. Du kannst ja nicht das V und A von E-V-A gleichsetzen.[/b] |
Oh ich glaube ich hab bis jetzt vererbung falsch verstanden.
Denn bis jetzt hab ich ein Object Tür gemacht und die in as Haus vererbt.
Aber wie mir jetzt langsam dämmert ist das falsch denn eine Tür ist ja keine Oberklasse von einem Haus sonder die Tür ein Object in der Klasse(Object) Haus.
Vane machs lieber so wie du es erst wolltest.!! _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|