Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
TheDeath Mini JLI'ler
Anmeldedatum: 06.04.2003 Beiträge: 2
Medaillen: Keine
|
Verfasst am: 06.04.2003, 10:48 Titel: Beispielprogramm fehlt- |
|
|
Laut dem Buch sollte es ein Beispielprogramm namens "Scroll" geben, dies ist aber bei mir nirgends zu finden.
Das programm gehört zu Kapitel 19 (Seite: 354-355).
Kann mir das irgendwer per mail zuschicken? |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
|
Nach oben |
|
 |
TheDeath Mini JLI'ler
Anmeldedatum: 06.04.2003 Beiträge: 2
Medaillen: Keine
|
Verfasst am: 06.04.2003, 11:03 Titel: |
|
|
ups, sorry. Hab ich wohl übersehen.  |
|
Nach oben |
|
 |
abc_d JLI Master Trainee

Alter: 35 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 08.04.2003, 11:39 Titel: |
|
|
Ich habe noch eine Frage zum Kapitel scrolling. Ich habe mich in den letzten Tagen durch die Direct Draw Kapitel durchgeschlagen. Immer wenn ich ich ein Bitmap so erstelle das es nicht komplet im Bildschirmbereich ist verlässt der Computer das Spiel sofort nachdem es entweder geladen wurde. (Dasselbe passiert wenn ich ein Bitmap laden will dass nicht exisitert).
Im Kapitel Scrolling steht das manche Grafikkarten das nicht unterstützen wenn man bmp's über den Bildschirm hinaus erstellt. Ich benutzten eine Geforce 2 MX/MX 400. Kann es sein das sie es nicht unterstützt? _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
 |
Ranma JLI'ler

Anmeldedatum: 10.12.2002 Beiträge: 167 Wohnort: Cadolzburg Medaillen: Keine
|
Verfasst am: 08.04.2003, 12:45 Titel: |
|
|
also ich hab die gleich Grafikkarte und daran liegt das nicht
das mit dem scrolling hast du wohl falsch verstanden
das scrolling vom buch funzt so:
als erstes wird die Bitmap in eine Surface geldaden
dann wird ein Rechteck mit Rect in Zeile 277 erstellt
dann kommt dieser Code
Code: | // Aufbau des 1. Bildausschnitts
r.top = 0;
r.left = 0;
r.bottom = SCR_HEIGHT;
r.right = SCR_WIDTH-StartX;
if(SCR_WIDTH != StartX)
{
lpDDSBackBuffer->BltFast(StartX,0,lpDDSurface,&r,DDBLTFAST_WAIT);
}
// Aufbau des 2. Bildausschnitts
r.left = SCR_WIDTH-StartX;
r.right = SCR_WIDTH;
if(0 != StartX)
{
lpDDSBackBuffer->BltFast(0,0,lpDDSurface,&r,DDBLTFAST_WAIT);
}
StartX++; // soll das Scrolling schneller sein, kann man diesen Wert
// auch um 2,3,4 usw. erhöhen.
if(StartX >= SCR_WIDTH)
{
StartX = 0;
}
|
in diesem Code stück wird das hier gemacht:
als erstes wird
durch r.top = 0 bestimmt dass das rechteck von ganz oben
und durch r.bottom =0 dass es nach ganz unten kopiert wird
dann wird r.left auf 0 gesetzt damit von ganz links kopiert wird
dann wird r.right auf die Bildschirmbreite - Variable StartX gesetzt
jetzt wird der Bereich auf Bildschirmanfang - Variable StartX kopiert
wenn jetzt die Variable StartX einen Wert hätte also 10 würde ja
nicht alles vom Bild kopiert werden, und alles erst ab breitenpixel 10
darstellen ,oder?
das ist auch der sinn der sache
denn danach
wird ein neuer bereich selektiert
r.left = Bildschirmbreite - Variable StartX
r.right = Bidlschirmbreite
was bemerkt?
gut
nun wird durch diesem code das selektiert was vorher nicht selektiert
wurde
das wird dann auf den Anfang des Bildschirms kopiert
nun wird StartX um eins erhöt,
falls der wert von StartX größer wie die Bildschirmbreite ist wird dieser dann auf 0 gesetzt
das ganze bewirkt, dass dein Bild von links nach rechts verschoben wird
und der Bereich der verschwindet wieder links auftaucht
ich hoffe man hätte es verstehen können
falls du mir deine E-mail gibtst
kann ich dir eine skizze schicken die ich selber gemacht hab um es zu verstehen  _________________ "Deutsche Sprache schwere Sprache"
sprach der C++er |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 08.04.2003, 13:52 Titel: |
|
|
Du kannst doch die Bitmap einfach aufteilen, wenn sie nich auf den Bildschirm passt. So hab ichs auch bei meiner Moorhuhnvariation gemacht.  _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Ranma JLI'ler

Anmeldedatum: 10.12.2002 Beiträge: 167 Wohnort: Cadolzburg Medaillen: Keine
|
Verfasst am: 08.04.2003, 15:17 Titel: |
|
|
was meinst du denn damit?
10 Oberflächen anlegen und in jede einen Teil malen
und dann immer so verschieben  _________________ "Deutsche Sprache schwere Sprache"
sprach der C++er |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 08.04.2003, 15:39 Titel: |
|
|
Ja, falls du Bitmaps benutzt, kannst du einfach das gesamte Szenario in eine Bitmap machen und diese dann in 800*600(1024*768) Pixel teilen und dann jeweils als einzelnes Surface laden. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Ranma JLI'ler

Anmeldedatum: 10.12.2002 Beiträge: 167 Wohnort: Cadolzburg Medaillen: Keine
|
Verfasst am: 08.04.2003, 17:37 Titel: |
|
|
irgendwie finde ich das irrsinig
du lädst als erstes alles in eine Surface teilst die dann auf andere
surfaces (oder so ähnlich) auf und musst dabei vielleicht sogar damit rechnen das es am schluss nicht flüssig aussieht
der weg vom Buch ist zwar (anscheinend) komplizierter, aber flüssiger
und bringt warscheinlich SOGAR weniger schreibarbeit, denke ich  _________________ "Deutsche Sprache schwere Sprache"
sprach der C++er |
|
Nach oben |
|
 |
abc_d JLI Master Trainee

Alter: 35 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 08.04.2003, 17:43 Titel: |
|
|
Ich hab das nochmal gelesen und gemerkt das ich es ein bisschen zu schnell gelesen habe . (da steht das manche Grafikkarten keine GROßEN! Oberflächen unterstützen) Danke für die schnelle Antwort. _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
 |
Starwash Senior JLI'ler
Alter: 40 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 08.04.2003, 18:35 Titel: |
|
|
Hi,
zum überprüfen, ob eine BMP existiert, kannst du ja einfach überprüfen, ob die Datei existiert, bevor du sie einliest.
Dies kannst du bspw. folgender Maßen machen:
Code: | int LoadBMP(char* s){
if(s==NULL)
return INVALID_STRING;
FILE* FBmp = NULL;
FBmp = fopen(s,"r");
if(FBmp==NULL)
return FILENOTFOUND;
fclose(FBmp);
//Bitmap laden
return 0;
} |
Es gibt sicherlich noch weitere, aber dies ist eine Variante, welche sogar im Buch beschrieben wird (zumindest im ersten Buch).
Gruss Tarek |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 08.04.2003, 19:51 Titel: |
|
|
Ranma hat Folgendes geschrieben: | ...und musst dabei vielleicht sogar damit rechnen das es am schluss nicht flüssig aussieht |
Bei mir läuft es eigentlich ganz flüssig. Wenn man ein Surface in bildschirmgroße Teile zerlegt müssen höchstens vier Teile pro Situation gezeichnet werden und das is eigentlich nich viel. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Ranma JLI'ler

Anmeldedatum: 10.12.2002 Beiträge: 167 Wohnort: Cadolzburg Medaillen: Keine
|
Verfasst am: 09.04.2003, 12:20 Titel: |
|
|
hätte ich nicht gedacht
naja ist ja eigentlich egal,
es gibt warscheinlich mehrere arten problemlos und ruckelfrei zu scrollen  _________________ "Deutsche Sprache schwere Sprache"
sprach der C++er |
|
Nach oben |
|
 |
abc_d JLI Master Trainee

Alter: 35 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 22.04.2003, 07:04 Titel: |
|
|
Schon klar das das Funktioniert (Christian beschreibt die möglichkeit auch in seinem Buch) hier wird das Bild nur nicht 5 mal geladen anstatt 1 mal. Komplett laden ist aber vom Code her einfacher (Und man muss es nicht teilen.
Ich habe für beide möglichkeiten eine Variante (um)geschreiben:
1. 1ne Oberfläche
2. mehrere Oberflächen
@Ranma wenn du Webspace brauchts: http://www.4-ever-server.net/ Ein paar Freunde von mir haben einen Server. _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
|
Nach oben |
|
 |
|