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:

Fragen zu eigenem Spiel
Gehe zu Seite 1, 2  Weiter
 
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
King-01
gesperrt


Anmeldungsdatum: 26.02.2007
Beiträge: 351

BeitragVerfasst am: 26.02.2007, 20:51    Titel: Fragen zu eigenem Spiel Antworten mit Zitat

Hi, hier bin ich wieder und hab ne frage zu FreeBasic:

Wie kann man in FreeBasic Sprites anzeigen? Kann mir jemand das mal genau erklären?
Und warum kann ich keine Bilder anzeigen?

ich führe ganz normal den code vom tutorial ( http://www.freebasic.de/FBtuts.php?zeig=tuts&view=Grafik_Grundlagen-Grafiken~anzeigen.txt ) aus:
Code:

screen 18
dim shared bild(100000) AS UBYTE
bload "ampeln.bmp", varptr(bild(0))
put (0,0), bild
sleep


und dann kommt zwar das Fenster des Programms, aber die Fehlermeldung:
Zitat:
test.exe hat ein Problem festgestellt und muss beendet werden...
(die fehlermeldung kennt ihr bestimmt)

leider weiß ich das passwort von meinem Webspace nicht mehr und
konnte keinen Screenshot hochladen.

die ampeln.bmp hat 256 Farben, ist größer als 100KB und ist im Verzeichnis der exe-Datei.

Warum geht das nicht?


Zuletzt bearbeitet von King-01 am 02.03.2007, 18:56, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



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

BeitragVerfasst am: 26.02.2007, 20:59    Titel: Antworten mit Zitat

Erstmal ist die Methode veraltet. Such im Board mal nach "ImageCreate".
Und dann: du definierst den Speicherplatz nicht ausreichend groß, wenn die BMP größer als 100KB ist.
Nächste Sache: Screenshots etc. können bei http://www.imageshack.us hochgeladen werden. Poste einen Thumbnail-Link hier.

Und zuletzt: (an alle, nocheinmal xD) sollte man eigentlich Leute wieder hier rein lassen, die freiwillig gegangen sind, weil sie etwas gegen uns hatten? (Eine rein moralische Frage.)
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elvis



Anmeldungsdatum: 01.06.2006
Beiträge: 818
Wohnort: Deutschland, BW

BeitragVerfasst am: 26.02.2007, 21:10    Titel: Antworten mit Zitat

Also ich erinner mich trübe daran, wie er zuerst sagte, er wolle wieder ein
"guter Mensch" sein, und dann eben wieder abgezischt ist. - Wie Infection93.
Daher würde ich ihm lediglich diese Frage gewären. neutral
Ich meine auch mich zu erinniern, dass er mir einmal in einer PN für von mir
gezeigter Unterstützung gedankt hat und versprchen hat, nicht böses mehr
zu tun. Es kann aber auch gut sein, dass ich das mit Infection93 verwechsel! zwinkern
Allerdings würde ich ihn nicht sofort wieder kicken, solange es bei dieser
Frage bleibt, oder vielleicht in zwei Monaten noch eine. cool
Außer er will wieder in QBasic ein OS proggen... lachen durchgeknallt

EDIT: Hab gerad entdeckt, dass im Off-Topic schon ein Thread aufgemacht
wurde... happy


Grüße, Elvis
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 26.02.2007, 21:59    Titel: Antworten mit Zitat

Elvis hat Folgendes geschrieben:
Ich meine auch mich zu erinniern, dass er mir einmal in einer PN für von mir
gezeigter Unterstützung gedankt hat und versprchen hat, nicht böses mehr
zu tun. Es kann aber auch gut sein, dass ich das mit Infection93 verwechsel! zwinkern
..ja, wenn man älter wird..
Wenn du dir aber nicht sicher bist, ist es nicht okay, über ihn zu meckern..
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 26.02.2007, 22:53    Titel: Antworten mit Zitat

Elvis hat Folgendes geschrieben:
...Außer er will wieder in QBasic ein OS proggen... lachen durchgeknallt ...


Naja, ne, jetz isser ja bei FB grinsen grinsen grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 26.02.2007, 23:32    Titel: Antworten mit Zitat

nur mal so dass es nicht scheint, wir wären nicht kompetent durchgeknallt

Code:

screen 18
Dim Bild as ubyte ptr 'pointer
Bild = ImageCreate(64,64) '64x64 pixel groß
Bload "datei.bmp", bild


für sprites dürften dich vor allem die neuen parameter bei PUT interessieren. im gegensatz zu Qbasic kannst du hier auch noch folgende anweisungen verwenden:
Code:

put(100,100),bild,alpha,<transparenzgrad, 0 = transparent, 255 = voll sichtbar>

put(100,100),bild,trans

Bei Trans ist anzumerken, dass in 8- oder 4bit-modi immer COLOR 0 die transparente farbe ist. in Höheren farbmodi wie 32 bit ist es immer die farbe rgb(255,0,255), Pink.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 27.02.2007, 01:55    Titel: Antworten mit Zitat

Code:



'800x600x24bpp - 3Screens (0-2)
Screen 19,24,3

'Grafik Screen
Screenset 2

'das zu ladene Sprite... praktisch zum testen verwende allerdings gern meine eigenen Formate
bload "womanb.bmp"

'Screen 0 und 1 für flimmerfreie Animationen und Bildaufbau...
dim shared as ubyte Edit_Scr,View_Scr
Edit_Scr=1:View_Scr=0

'Image Pointer für Sprite
Dim Sprite as any ptr
'Sprite_Timer.. wiedergabe verzögerung
Dim Sprite_Timer as double

'---
Dim Animation as String


Dim ani

'Image
Sprite=imagecreate(67,77)



'Animationsabfolge
animation$=chr$(0,1,2,3,3,3,3,3)



'wiederholung bis ESC
while inkey$<>chr$(27)
   
   
    if timer-sprite_timer>0.16 then
        if ani=Len(animation) then ani=0
        ani=asc(mid$(animation,ani+1,1))

       
        sprite_timer=timer
       
        ScreenSet 2
        get (ani*67,0)-(66+(ani*67),76),sprite
       
        ScreenSet Edit_Scr
        Line (0,0)-(799,599),&h00,bf
       
        put (100,100),sprite,trans
       
        ani=ani+1
   
        ScreenSet ,Edit_Scr
        Swap Edit_Scr,View_Scr
   
    end if
wend

imagedestroy(sprite)
end
   


weiss grad net wie ich hier 'n Bild einfügen kann, sonst könnte ich Dir mein Test-Sprite zur besseren erklärung mitschicken....[/img]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
King-01
gesperrt


Anmeldungsdatum: 26.02.2007
Beiträge: 351

BeitragVerfasst am: 27.02.2007, 16:06    Titel: Antworten mit Zitat

Danke. Ihr habt mir weiter geholfen.
Aber das erste Beispiel von Jojo, hat bei mir irgendwie nix angezeigt... verlegen

edit:
Im Oma-Tutorial (3. Teil) stehts drin.
Ich musste das Beispiel nur etwas abändern.
Code:

SUB test1
  DIM img1 AS ANY PTR
  SCREEN 18,24
  img1 = IMAGECREATE(640, 400)
  BLOAD "ampeln.bmp",img1
  PUT (1,1),img1,PSET
  SLEEP
  IMAGEDESTROY img1
END SUB
test1
sleep


ich hab da noch hinzugefügt, dass das Sub ausgeführt wird und ein sleep.
http://www.askos.de/tutorial/kap36.htm#kap2

edit2:

Wie kann ich solche Fraben definieren, die dann rausgefiltert werden?
Also bei BlitzBaisc ist das ja MaskImage, aber in FreeBasic?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.02.2007, 21:21    Titel: Antworten mit Zitat

bezüglich meinem beispiel gibt es diese möglichkeit:
screen 18 stellt 256 farben ein. wenn du ein bmp mit höherer bit-zahl lädst, wird's nicht angezeigt. mehr farben erreichst du, wie schon oben beschrieben, durch screen 18,16 oder screen 18,32.

btw, noch ein tipp: mache den puffer, den du mit IMAGECREATE erstellst, NIEMALS (wirklich! niemals!) größer ODER kleiner als das tatsächliche bild. mache ihn ganz genau so groß. ich hatte selbst mit buffern, die etwas größer waren, mal ziemliche probleme und keiner wusste, wo das problem im programm war....

bezüglih "rausgefilterter farben": siehe meinen ersten post mit dem TRANS-beispiel.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
King-01
gesperrt


Anmeldungsdatum: 26.02.2007
Beiträge: 351

BeitragVerfasst am: 28.02.2007, 15:30    Titel: Antworten mit Zitat

Bei trans kommt keine Fehlermeldung, aber bei rgb:

Da der Code:
Code:

sub screeninit()
    'transparentfarbe: Rot: 255, Grün: 100, Blau: 120
    cls
    screen 18,32
    rgb (255,100,120)
end sub

sub bg_show()
    dim bg as any ptr
    bg = imagecreate(640,480)
    bload "dschungel.bmp",bg
    put (1,1),bg,pset
    sleep
    imagedestroy bg
end sub

sub fkreuz_show()
    dim fk as any ptr
    fk = imagecreate(30,30)
    bload "Fadenkreuz.bmp",fk
    put (50,50),fk,trans
    sleep
    imagedestroy fk
end sub


Fehlermeldung:
Code:

Invalid data types
rgb (255,100,120)
                 ^


Könnt ihr mir helfen?

edit:
Noch eine Frage:
Wie heißen die Koordinaten der Maus in Freebasic? In BlitzBasic heißen die ja MouseX und MouseY.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



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

BeitragVerfasst am: 28.02.2007, 16:02    Titel: Antworten mit Zitat

Erst wollt ich sagen "such mal nach getmouse". Aber da post ich dann doch lieber'n Beispiel, will die kurzzeitige Idylle hier nicht zerstören. Zunge rausstrecken zwinkern

Code:

GetMouse MausXPos, MausYPos, MausRad, MausButtons

Müsste eigentlich alles erklären. lächeln Probier mal rum, die einzelnen Werte bei Veränderungen ausgeben zu lassen. Insbesondere solltest du dir mal die Maus-Rad- und die Maus-Button-Werte anschauen. zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
King-01
gesperrt


Anmeldungsdatum: 26.02.2007
Beiträge: 351

BeitragVerfasst am: 28.02.2007, 16:08    Titel: Antworten mit Zitat

Ok, danke.

edit:
Und wie kann man den Mauscursor "verkleiden"? Also wie kann ich es machen, dass wenn der Mauszeiger über dem Fenster von FreeBasic ist, dass dann anstelle des standart windows mauszeigers das bild "Fadenkreuz.bmp" angezeigt wird?

edit2:
Zur Mauseinbindung: hab gerade das: http://forum.qbasic.at/viewtopic.php?t=3036&highlight=getmouse entdeckt. Früher wusste ichs noch lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 28.02.2007, 18:56    Titel: Antworten mit Zitat

Setmouse ,,0 schaltet den cursor aus (setmouse ,,1 wieder an). die beiden kommas stehen für die leer gelassenen x-und y-werte. du kannst dann PUT(MouseX,MouseY), DeinCursor,Trans verwenden, um nen eigenen zu verwenden.

bezüglich deines rgb-problem: RGB ist kein befehl. RGB liefert dir ein integer zurückt, das den farbcode enthält.
Farbe = RGB(0,0,128) würde z.B. einen wert für ein blau mit halber intensität zurückliefern, und diesen wert könnenst du z.B. in LINE, CIRCLE, usw. verwenden:
Line (0,0)-(100,200), RGB(0,0,128)

wie ich schon gesagt habe, es gibt nur EINE transparente farbe, und die ist festgelegt. in screenmodi über 8 bit ist es pink mit dem farbwert 255,0,255. in 8 bit und darunter ist es farbe 0.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
King-01
gesperrt


Anmeldungsdatum: 26.02.2007
Beiträge: 351

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

Ok, die der Cursor wird schonmal ausgeblendet. Aber:
1. Die Farbe 255,0,255 wird nicht ausgeblendet (hab 32Bit Fabrtiefe) und das Fadekreuz folgt nicht der Maus.
Hier der Code:
Code:

dim shared bg as any ptr

dim shared fk as any ptr

sub screeninit()
    cls
    screen 18,32
end sub

sub bg_show()
    PUT (1,1),bg,PSET
end sub

sub bg_load()
    bg = IMAGECREATE(640,480)
    BLOAD "dschungel.bmp",bg
end sub

sub fk_show()
    put (MouseX,MouseY),fk,trans
end sub

sub fk_load()
    fk = imagecreate(50,50)
    bload "Fadenkreuz.bmp",fk
end sub

sub mouseinit()
    getmouse MouseX, MouseY, MouseRad, MouseButtons
    setmouse ,,0
end sub

screeninit
mouseinit
bg_load
fk_load
bg_show

x=1
for x=1 to 10000000000
    fk_show
next x
sleep

ok, am schluss ist es etwas unstrukturiert.... aber was ist da falsch?

2. Bei einem FB-Programm ist doch meistens ein Hauptfenster und ein DOS-Fenster. Wie kann ich jetzt sachen auf dem DOS-Fenster ausgeben?
Ich will da hinschreiben wenn der Hintergrund geladen wird: "Hintergrund wird geladen" oder so.

--------edit:---------
Das mit der Transparentfarbe geht doch. Nur Paint nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

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

aaalso,
die mauskooridnaten musst du in der sub fk_show erst wieder NEU auslesen. also die getmouse-zeile da rein kopieren (die variablen werden nicht autoamtisch upgedatet). kannst du mal das bild, das transparenz haben soll, hochladen? vlt ist deine farbe irgendwie falsch oder so...

zu 2) schau mal in der referenz nach Open CONS oder Open "CONS" nach, weiß jetzt nicht genau wie das heißt happy damit kannst du in die konsole schreiben.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
King-01
gesperrt


Anmeldungsdatum: 26.02.2007
Beiträge: 351

BeitragVerfasst am: 28.02.2007, 22:09    Titel: Antworten mit Zitat

Geht das auch wenn ich einfach die Maus auserhalb der SUB initialisiere?
Das mit den Farben hat sich erübrigt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 28.02.2007, 22:11    Titel: Antworten mit Zitat

immer, wnen du die mauskoordianten willst, musst du getmouse aufrufen - die variable wird nicht autoamtisch aufgefüllt. natürlich kansnt du auch in einer do...loop schleife den getmouse-befehl aufrufen und dann diverse subs ausführen, mit Dim Shared wäre das kein problem.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
King-01
gesperrt


Anmeldungsdatum: 26.02.2007
Beiträge: 351

BeitragVerfasst am: 28.02.2007, 22:15    Titel: Antworten mit Zitat

ok. Das geht jetzt. Aber da werden lauter Fadenkreuze "hingemalt" verwundert traurig
Wenn ich bg_show mit in die schleife packe, wird das fadenkreuz wieder überschrieben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 28.02.2007, 22:21    Titel: Antworten mit Zitat

jetzt kommt die kunst der grafik durchgeknallt schau mal nach befehlen wie Screencopy und screenset. mit screencopy kannst du einen bildschirm kopieren (wodruch du nicht immer wieder alles neu zeichenn musst) und mit screenset kannst du in einem background-buffer malen.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
King-01
gesperrt


Anmeldungsdatum: 26.02.2007
Beiträge: 351

BeitragVerfasst am: 28.02.2007, 22:29    Titel: Antworten mit Zitat

Oh man. Ich bin dazu zu müde. Ich geh jetzt dann schlafen. Kannst du vllt. das ganze in meinen Code einfügen?#

edit:
Hab bei der Suche einen alten Thread von mir gefunden: http://forum.qbasic.at/viewtopic.php?t=2716&highlight=screencopy+screenset
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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