Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Bild-Adventure

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Odys



Anmeldungsdatum: 14.01.2006
Beiträge: 40

BeitragVerfasst am: 20.02.2006, 20:18    Titel: Bild-Adventure Antworten mit Zitat

Ich habe vor ein Adventure mit .bmp (Paint) Bildern zu machen allerdings tun sich mir dabei 2 Fragen auf :

1. Ich will das Adventure so machen das erst ein Bild mit Text darauf kommt man entscheiden kann (mind. 4 Möglichkeiten, a,b,c oder d) und dann ein nächstes Bild mit Text kommt man was entscheiden kann und so weiter......
Könnt ihr mir zeigen wie man das am besten programmiert ? (Und möglichst einfach^^)
Vor allem der Übergang von den einen Bild (a,b,c oder d eingeben) nächstes Bild (a,b,c oder d eingeben) u.s.w....macht mir zu schaffen !

2. Wie kann ich es machen das wenn das .bmp Bild im Spiel angezeigt wird der Windowsumriss nicht dabei ist (Dies mit Bild vergrößern, Exit und verkleinern)

thx schon mal im Voraus happy
_________________
Ich bin (noch) kein Profi, habt etwas Verständnis !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 20.02.2006, 20:24    Titel: Antworten mit Zitat

Zu erstens:

Erstmal das Bild anzeigen, dann
Code:

WHILE auswahl=0
  zeichen$=INKEY$
  IF zeichen$="a" THEN auswahl=1
  IF zeichen$="b" THEN auswahl=2
  IF zeichen$="c" THEN auswahl=3
  IF zeichen$="d" THEN auswahl=4
WEND


Und wenn auswahl 1 ist, gibst du das Bild für Möglichkeit a aus, und dann wieder ne Auswahl, usw.

2.
Der Windows Umriss? Also bei mir ist der nie dabei, wenn ich ne Bitmap anzeige, zumindest nicht bei der Bitmap. Den Fensterrahmen kriegst du aber z.B. weg, wenn du Vollbild nimmst. Da sollte es auch nen Befehl für geben, bei SDL war das SDL_NoFrame, aber kA wie das bei Screen geht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 20.02.2006, 20:27    Titel: Antworten mit Zitat

http://www.freebasic.de/r.php?s=SCREEN%20%28Grafik%29
Zitat:
Flags ist einer von diesen Werten, die durch ein logisches OR miteinander verknüpft
werden können:
Wert Wirkung
1 Vollbildmodus
2 OpenGL-Modus
4 kein Moduswechsel
16 stencil buffer for when in OpenGL mode
32 accumulation buffer for when in OpenGL mode
-1 Grafikmodus ohne visuelles Feedback

Macht also bei Screen 18 als Beispiel:
SCREEN 18,,,1
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Odys



Anmeldungsdatum: 14.01.2006
Beiträge: 40

BeitragVerfasst am: 20.02.2006, 20:47    Titel: Antworten mit Zitat

Wenn ich 18,,,1 eingebe bleibt der ganze Bildschirm schwarz und die .bmp wird gar nicht angezeigt !
_________________
Ich bin (noch) kein Profi, habt etwas Verständnis !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Odys



Anmeldungsdatum: 14.01.2006
Beiträge: 40

BeitragVerfasst am: 20.02.2006, 20:52    Titel: Antworten mit Zitat

Progger_X hat Folgendes geschrieben:
Zu erstens:

Erstmal das Bild anzeigen, dann
Code:

WHILE auswahl=0
  zeichen$=INKEY$
  IF zeichen$="a" THEN auswahl=1
  IF zeichen$="b" THEN auswahl=2
  IF zeichen$="c" THEN auswahl=3
  IF zeichen$="d" THEN auswahl=4
WEND


Und wenn auswahl 1 ist, gibst du das Bild für Möglichkeit a aus, und dann wieder ne Auswahl, usw.



Irgendwie verstehe ich das nicht !
Wo kann ich mein Text rein setzen und wo kommt dann das Bild ?
Muss ich dann statt auswahl=1 auswahl="text" then "Bild" machen.
_________________
Ich bin (noch) kein Profi, habt etwas Verständnis !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 20.02.2006, 21:50    Titel: Antworten mit Zitat

Der Code von ProggerX ist nicht ganz vollständig.
Du müsstest in die WHILE-Schleife noch eine SELECT CASE einbauen:
Also ungefähr so.
Code:

DECLARE SUB ShowBMP(FileName$, X As Integer, Y As Integer)

SUB ShowBMP(FileName$, X As Integer, Y As Integer)
  DIM DeinBild As Any Ptr
  OPEN FileName$ FOR BINARY AS #1
    GET #1,19,hoehe
    GET #1,23,breite
  CLOSE #1
  DeinBild=IMAGECREATE(hoehe, breite)
  BLOAD FileName$, DeinBild
  PUT (X,Y),DeinBild
  IMAGEDESTROY(DeinBild)
END SUB
 
WHILE auswahl=0
  zeichen$=INKEY$
  IF zeichen$="a" THEN auswahl=1
  IF zeichen$="b" THEN auswahl=2
  IF zeichen$="c" THEN auswahl=3
  IF zeichen$="d" THEN auswahl=4
  SELECT CASE auswahl
    CASE 1
      ShowBMP("bild1.bmp",0,0)
    CASE 2
      ShowBMP("bild2.bmp",0,0)
    CASE 3
      ShowBMP("bild3.bmp",0,0)
    CASE 4
      ShowBMP("bild4.bmp",0,0)
  END SELECT
WEND

Ich hoffe mal, dass der Code fehlerfrei ist - ist ungetestet. Achja: Eine Clippingfunktion ist nicht eingebaut - das müsstest entweder du erledigen, oder du passt ebend selbst auf, dass die Bilder nicht außerhalb des Bildschirmbereiches kommen. zwinkern [/code]

/edit: Code funktionstüchtig gemacht. grinsen
_________________
Eine handvoll Glück reicht nie für zwei.
--


Zuletzt bearbeitet von Mao am 20.02.2006, 21:53, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 20.02.2006, 21:53    Titel: Antworten mit Zitat

Aus meiner berühmten Sammlung:

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/Abenteuerspiel.html

Die dort gezeigten Programmier-Grundprinzipien sind völlig unabhängig von der verwendeten Programmiersprache und gelten für FreeBasic genauso.

Ansonsten bekommt halt einfach die Orts- und Gegenstandverwaltung einfach ein zusätzliches Attribut .BMP-Dateiname, damit das Richtige geladen werden kann.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Odys



Anmeldungsdatum: 14.01.2006
Beiträge: 40

BeitragVerfasst am: 21.02.2006, 15:10    Titel: Antworten mit Zitat

Also wenn ich das mache wie Mao gezeigt hat bleibt der Bildschirm schwarz !
(Außerdem weiß ich gar nicht so genau wo ich meine Bildernamen rein setzen soll und wo ich die Adresse hin packen soll)


p.s. (@dreal)Ich wollte ja eher das mir das jemand erklärt und relativ einfache Programmierung zeigt(Ich steig das nämlich nicht wirklich durch happy)
_________________
Ich bin (noch) kein Profi, habt etwas Verständnis !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 21.02.2006, 18:33    Titel: Antworten mit Zitat

Der Kollege Mao hat beim Programmieren geschlafen und das SCREEN vergessen. grinsen
Zudem ist etwas unglücklich, das sich das Programm gleich nach der Auswahl beendet.
Code:
DECLARE SUB ShowBMP(FileName$, X As Integer, Y As Integer)

SUB ShowBMP(FileName$, X As Integer, Y As Integer)
  DIM DeinBild As Any Ptr
  OPEN FileName$ FOR BINARY AS #1
    GET #1,19,hoehe
    GET #1,23,breite
  CLOSE #1
  DeinBild=IMAGECREATE(hoehe, breite)
  BLOAD FileName$, DeinBild
  PUT (X,Y),DeinBild
END SUB

SCREEN 18,32,,1

do
  zeichen$=INKEY$

  SELECT CASE val(zeichen$)
    CASE 1
      cls
      ShowBMP("bild1.bmp",0,0)
    CASE 2
      cls
      ShowBMP("bild2.bmp",0,0)
    CASE 3
      cls
      ShowBMP("bild3.bmp",0,0)
    CASE 4
      cls
      ShowBMP("bild4.bmp",0,0)
  END SELECT
loop

Das Bild wird mit 1 2 3 4 Ausgewählt.

Zitat:
(Außerdem weiß ich gar nicht so genau wo ich meine Bildernamen rein setzen soll und wo ich die Adresse hin packen soll)

ShowBMP("Hier gehört der Dateinamen und der Pfad rein",0,0)
Die beiden Nullen kannst du ändern, wenn es nicht im Ecken oben links kommen soll.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Odys



Anmeldungsdatum: 14.01.2006
Beiträge: 40

BeitragVerfasst am: 21.02.2006, 19:58    Titel: Antworten mit Zitat

DANKE !
Dann hab ich ja fast schon alles happy
Echt danke,danke,danke !

Ein Problem hab ich jetzt allerdings happy :
Von dem Bild wird nur ein Teil angezeigt, nicht das ganze.
_________________
Ich bin (noch) kein Profi, habt etwas Verständnis !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 21.02.2006, 20:44    Titel: Antworten mit Zitat

Probier statt:
SCREEN 18,32,,1
mal das
SCREEN 19,32,,1
oder das
SCREEN 20,32,,1
aus, dann sollte es gehen.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 21.02.2006, 21:00    Titel: Antworten mit Zitat

Odys hat Folgendes geschrieben:
p.s. (@dreal)Ich wollte ja eher das mir das jemand erklärt und relativ einfache Programmierung zeigt(Ich steig das nämlich nicht wirklich durch)

Für Dich sonst noch ein Artikel:

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/Anfaengerfehler.html

Der Artikel zeigt so die typischen Fehler von Programmierneulingen auf und bietet jeweils passende Lösungen dazu.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 22.02.2006, 11:30    Titel: Antworten mit Zitat

@Micheal Frey: Ich hatte den Code nur auf syntaktische Fehler gecheckt. grinsen Dachte, das soll nur ein Teilcode sein, sodass der SCREEN-Befehl und andere SUB's schon drinne steh'n. Ja, das CLS hatte ich auch vergessen. Kann schon seltsame Ausgaben bringen, wenn die Bilder nicht immer gleich groß sind. durchgeknallt
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Odys



Anmeldungsdatum: 14.01.2006
Beiträge: 40

BeitragVerfasst am: 23.02.2006, 19:18    Titel: Antworten mit Zitat

Jetzt hab ich noch das Problem das wenn ich das Adventure weiter machen will immer auf Fehler stoße !
Ich wollte z.b.s :
Code:
DECLARE SUB ShowBMP(FileName$, X As Integer, Y As Integer)

SUB ShowBMP(FileName$, X As Integer, Y As Integer)
  DIM DeinBild As Any Ptr
  OPEN FileName$ FOR BINARY AS #1
    GET #1,19,hoehe
    GET #1,23,breite
  CLOSE #1
  DeinBild=IMAGECREATE(hoehe, breite)
  BLOAD FileName$, DeinBild
  PUT (X,Y),DeinBild
END SUB

SCREEN 18,32,,1

do
  zeichen$=INKEY$

  SELECT CASE val(zeichen$)
    CASE 1
      cls
      ShowBMP("bild1.bmp",0,0) then
Print "Hallo"
DECLARE SUB ShowBMP(FileName$, X As Integer, Y As Integer)

SUB ShowBMP(FileName$, X As Integer, Y As Integer)
  DIM DeinBild As Any Ptr
  OPEN FileName$ FOR BINARY AS #1
    GET #1,19,hoehe
    GET #1,23,breite
  CLOSE #1
  DeinBild=IMAGECREATE(hoehe, breite)
  BLOAD FileName$, DeinBild
  PUT (X,Y),DeinBild
END SUB

SCREEN 18,32,,1

do
  zeichen$=INKEY$

  SELECT CASE val(zeichen$)
    CASE 1
      cls
      ShowBMP("bild1.bmp",0,0) then
Print "Du gehst weiter!"
    CASE 2
      cls
      ShowBMP("bild2.bmp",0,0)
    CASE 3
      cls
      ShowBMP("bild3.bmp",0,0)
    CASE 4
      cls
      ShowBMP("bild4.bmp",0,0)
  END SELECT
loop
    CASE 2
      cls
      ShowBMP("bild2.bmp",0,0)
    CASE 3
      cls
      ShowBMP("bild3.bmp",0,0)
    CASE 4
      cls
      ShowBMP("bild4.bmp",0,0)
  END SELECT
loop


Also das man nach der Auswahl noch eine Auswahl hat und so weiter....

Editiert durch Moderator: Source in code-Tags gesetzt. (Sebastian)
_________________
Ich bin (noch) kein Profi, habt etwas Verständnis !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 23.02.2006, 19:22    Titel: Antworten mit Zitat

Lad den Code bitte hier http://www.freebasic.de/fbnp/ auf, für's Forum ist es mitterweile zu gross.
(Zudem verschwinden hier Leerzeichen und ähnliches, auf fbnp nicht)
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 23.02.2006, 19:44    Titel: Antworten mit Zitat

Ich finde nicht, dass der Code für das Forum hier zu lang ist. Die paar Bytes... zwinkern
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 23.02.2006, 19:59    Titel: Antworten mit Zitat

Stimmt, jetzt im Kasten sieht's besser aus.

Nun zum Fehler:
Das darf nur einmal im Programm stehen:
Code:
SUB ShowBMP(FileName$, X As Integer, Y As Integer)
  DIM DeinBild As Any Ptr
  OPEN FileName$ FOR BINARY AS #1
    GET #1,19,hoehe
    GET #1,23,breite
  CLOSE #1
  DeinBild=IMAGECREATE(hoehe, breite)
  BLOAD FileName$, DeinBild
  PUT (X,Y),DeinBild
END SUB

(Entweder ganz am Anfang oder schluss)

Auch das hier
Code:
SCREEN 18,32,,1
braucht es nur einmal, wobei hier das mehrfach nicht schadet.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz