Vorschläge und Ideen gesucht für Slotmaschine ;)

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Vorschläge und Ideen gesucht für Slotmaschine ;)

Beitrag von ts-soft »

Wichtig ist auch noch, in dem Array wird die ID gespeichert, nicht die ImageID(),
die erhält man mit ImageID(ID), und entspricht unter Windows dem Handle.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Vorschläge und Ideen gesucht für Slotmaschine ;)

Beitrag von True29 »

leider ist nun ein neues Problem aufgetaucht :/
Bei dem Ersten Start Zeichnet er alles wunderbar.

Beim 2 Aufruf ist alles versetzt kann man das irgendwie nicht erklären.
Ich habe mal alle Grafiken die benutzt werden angehängt Mfg

Code: Alles auswählen

EnableExplicit

UseJPEGImageDecoder() ; an den Anfang geschoben (vor der ersten Benutzung)
UsePNGImageDecoder()

Global Z.i

Global Ende.i = #False
Global Gebot = 40
Global Dim Gewinn.i(11)
Gewinn(0)=0
Gewinn(1)=Gebot*1 
Gewinn(2)=0
Gewinn(3)=Gebot*2
Gewinn(4)=0
Gewinn(5)=Gebot*3
Gewinn(6)=0
Gewinn(7)=Gebot*4
Gewinn(8)=0
Gewinn(9)=Gebot*5
Gewinn(10)=0

Global Gewinn.i,Bild.i,Ereignis.i,Bild_x.i,Bild_y.i
Global Trommel1_x.i = 130
Global Trommel1_y.i = 145
Global Trommel2_x.i = 380
Global Trommel2_y.i = 145
Global Trommel3_x.i = 630
Global Trommel3_y.i = 145    
Global Trommel4_x.i = 880
Global Trommel4_y.i = 145    
Global Trommel5_x.i= 1130
Global Trommel5_y.i = 145

Global Dim Bilder.i(11)
  Bilder.i(0)= LoadImage(#PB_Any,"Gfx\a.png",#PB_ImagePlugin_PNG)  
  Bilder.i(1)= LoadImage(#PB_Any,"Gfx\b.png",#PB_ImagePlugin_PNG)  
  Bilder.i(2)= LoadImage(#PB_Any,"Gfx\c.png",#PB_ImagePlugin_PNG)  
  Bilder.i(3)= LoadImage(#PB_Any,"Gfx\d.png",#PB_ImagePlugin_PNG)  
  Bilder.i(4)= LoadImage(#PB_Any,"Gfx\q.png",#PB_ImagePlugin_PNG)
  Bilder.i(5)= LoadImage(#PB_Any,"Gfx\z.png",#PB_ImagePlugin_PNG)
  Bilder.i(6)= LoadImage(#PB_Any,"Gfx\s1.png",#PB_ImagePlugin_PNG)
  Bilder.i(7)= LoadImage(#PB_Any,"Gfx\s2.png",#PB_ImagePlugin_PNG)
  Bilder.i(8)= LoadImage(#PB_Any,"Gfx\s3.png",#PB_ImagePlugin_PNG)
  Bilder.i(9)= LoadImage(#PB_Any,"Gfx\s4.png",#PB_ImagePlugin_PNG)
  Bilder.i(10)= LoadImage(#PB_Any,"Gfx\s5.png",#PB_ImagePlugin_PNG)

Global Dim Bilder2.i(11)
;  Bilder2.i(0)= LoadImage(#PB_Any,"Gfx\a2.png",#PB_ImagePlugin_PNG)  
;  Bilder2.i(1)= LoadImage(#PB_Any,"Gfx\b2.png",#PB_ImagePlugin_PNG)  
;  Bilder2.i(2)= LoadImage(#PB_Any,"Gfx\c2.png",#PB_ImagePlugin_PNG)  
;  Bilder2.i(3)= LoadImage(#PB_Any,"Gfx\d2.png",#PB_ImagePlugin_PNG)  
;  Bilder2.i(4)= LoadImage(#PB_Any,"Gfx\q2.png",#PB_ImagePlugin_PNG)
;  Bilder2.i(5)= LoadImage(#PB_Any,"Gfx\z2.png",#PB_ImagePlugin_PNG)
;  Bilder2.i(6)= LoadImage(#PB_Any,"Gfx\s1_2.png",#PB_ImagePlugin_PNG)
;  Bilder2.i(7)= LoadImage(#PB_Any,"Gfx\s2_2.png",#PB_ImagePlugin_PNG)
;  Bilder2.i(8)= LoadImage(#PB_Any,"Gfx\s3_2.png",#PB_ImagePlugin_PNG)
;  Bilder2.i(9)= LoadImage(#PB_Any,"Gfx\s4_2.png",#PB_ImagePlugin_PNG)
;  Bilder2.i(10)= LoadImage(#PB_Any,"Gfx\s5.png",#PB_ImagePlugin_PNG)

Enumeration ;Fenster
  #FENSTER_HAUPT
EndEnumeration

Enumeration ;menü
  #MENU_Gravity
  #MENU_Mini
  #MENU_Highscore
  #MENU_Haupt
  #MENU_ENDE
  #MENU_UEBER
EndEnumeration

Enumeration ;Bilder
  #BILD_HAUPT
  #BILD_FRAME
  #BILD_PRESCREEN
  #BILD_LOGO
  #BILD_SYMBOL
  
EndEnumeration

Enumeration ;Gadgets
  #BILD_GADGET
  #GADGET_SYMBOL
EndEnumeration

#FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered

Procedure Fehlerbehandlung(Ergebnis.i, Text.s)
If Ergebnis = 0
MessageRequester("Fehler", Text, #PB_MessageRequester_Ok)
End
EndIf
EndProcedure

Procedure Draw_Symbol(Bild.i,Z.i)
Bild_x.i=0
Bild_y.i=0

  If Z = 1
    Bild_x.i = Trommel1_x.i
    Bild_y.i = Trommel1_y.i
  EndIf
  
  If Z = 2
    Bild_x.i = Trommel1_x.i
    Bild_y.i = Trommel1_y.i+200
  EndIf
  
  If Z = 3
    Bild_x.i = Trommel1_x.i
    Bild_y.i = Trommel1_y.i+400
  EndIf
  
  If Z = 4
    Bild_x.i = Trommel2_x.i
    Bild_y.i = Trommel2_y.i
  EndIf
  
  If Z = 5
    Bild_x.i = Trommel2_x.i
    Bild_y.i = Trommel2_y.i+200
  EndIf
  
  If Z = 6
    Bild_x.i = Trommel2_x.i
    Bild_y.i = Trommel2_y.i+400
  EndIf
  
  If Z = 7
    Bild_x.i = Trommel3_x.i
    Bild_y.i = Trommel3_y.i
  EndIf
  
  If Z = 8
    Bild_x.i = Trommel3_x.i
    Bild_y.i = Trommel3_y.i+200
  EndIf
  
  If Z = 9
    Bild_x.i = Trommel3_x.i
    Bild_y.i = Trommel3_y.i+400
  EndIf
  
  If Z = 10
    Bild_x.i = Trommel4_x.i
    Bild_y.i = Trommel4_y.i
  EndIf
  
  If Z = 11
    Bild_x.i = Trommel4_x.i
    Bild_y.i = Trommel4_y.i+200
  EndIf
  
  If Z = 12
    Bild_x.i = Trommel4_x.i
    Bild_y.i = Trommel4_y.i+400
  EndIf
  
  If Z = 13
    Bild_x.i = Trommel5_x.i
    Bild_y.i = Trommel5_y.i
  EndIf
  
  If Z = 14
    Bild_x.i = Trommel5_x.i
    Bild_y.i = Trommel5_y.i+200
  EndIf
  
  If Z = 15
    Bild_x.i = Trommel5_x.i
    Bild_y.i = Trommel5_y.i+400
  EndIf
DrawAlphaImage(ImageID(Bild),Bild_x,Bild_y) 
EndProcedure


Procedure Gravity_main()   
  ResizeWindow(#FENSTER_HAUPT,#PB_Ignore ,#PB_Ignore ,1500,850)
  If CreateImage(#BILD_HAUPT, 1500,850)
  If StartDrawing(ImageOutput(#BILD_HAUPT))  
    DrawImage(ImageID(#BILD_FRAME),0,0)               
    
    For Z=1 To 15
      Bild = Bilder(Random(11))
      Draw_Symbol(Bild,Z)    
    Next Z
    
    ;DrawAlphaImage(ImageID(#BILD_PRESCREEN),0,0)        
    StopDrawing()
  EndIf  
  ResizeImage(#BILD_HAUPT,WindowWidth(0),WindowHeight(0))
  ImageGadget(#BILD_GADGET, 0, 0, 1500, 850, ImageID(#BILD_HAUPT))  
EndIf   


Gewinn = Gewinn(Random(10))
EndProcedure


;Fehlerbehandlung(LoadImage(#BILD_LOGO, "Gfx\logo.jpg"),"Fehler beim Laden") 
Fehlerbehandlung(LoadImage(#BILD_FRAME,"Gfx\rahmen.png",#PB_ImagePlugin_PNG),"Fehler beim Laden")  
;Fehlerbehandlung(LoadImage(#BILD_PRESCREEN,"Gfx\pre_screen.png",#PB_ImagePlugin_PNG),"Fehler beim Laden")  

;If CreateImage(#BILD_HAUPT, 1024, 768)
  ;If StartDrawing(ImageOutput(#BILD_HAUPT))  
   ; DrawImage(ImageID(#BILD_LOGO),0,0)         
  ;StopDrawing()
  ;EndIf
;EndIf


If OpenWindow(#FENSTER_HAUPT, 0, 0, 1024, 768, "Gravity 0.1", #FLAGS)
  ;ImageGadget(#BILD_GADGET, 0, 0, 1024, 768, ImageID(#BILD_HAUPT))
  If CreateMenu(#MENU_HAUPT, WindowID(#FENSTER_HAUPT))           
    MenuTitle("Spiel")   
    MenuItem(#MENU_Gravity, "Gravity")
    MenuItem(#MENU_Mini, "Daily Minigame")
    MenuItem(#MENU_Highscore, "Online Highscore")   
    MenuBar()
    MenuItem(#MENU_ENDE, "Beenden")   
    MenuTitle("Hilfe")
    MenuItem(#MENU_UEBER, "Über...")   
    Repeat
      Ereignis.i = WaitWindowEvent()
      Select Ereignis
        Case #PB_Event_Menu
          Select EventMenu()
            Case #MENU_Gravity         
              Gravity_main()         
            Case #MENU_Highscore
              Debug "Highscore"
            Case #MENU_Mini
              Debug "Minigame"
            Case #MENU_ENDE
              Ende = #True
            Case #MENU_UEBER
              MessageRequester("Über", "Hier beschreiben Sie Ihr Programm.")
          EndSelect
      EndSelect
    Until Ereignis = #PB_Event_CloseWindow Or Ende = #True
  EndIf
EndIf 


FreeImage(#BILD_HAUPT)
FreeImage(#BILD_FRAME)
;FreeImage(#BILD_PRESCREEN)
;FreeImage(#BILD_LOGO)
Anhang Bilder:
http://gravitygame.de/gfx.rar
i7,12gb ram , Windows 10 ,Purebasic 5.50
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Vorschläge und Ideen gesucht für Slotmaschine ;)

Beitrag von ts-soft »

Code: Alles auswählen

 Bilder.i(0)= LoadImage(#PB_Any,"Gfx\a.png",#PB_ImagePlugin_PNG)  
Wie bereits erwähnt, es gibt kein Flag: #PB_ImagePlugin_PNG, diese Konstante ist nur für die SaveImage Funktion!

Code: Alles auswählen

Bilder.i(0)= LoadImage(#PB_Any,"Gfx\a.png")
Warum Deine Einrückungen schon wieder weg sind, verstehe ich auch nicht, macht die
IDE doch fast autom. richtig.

Zum eigentlichen Problem: Ist mir viel zu warm um jetzt rauszufinden, was Du Dir bei Deinen
Berechnungen gedacht hast :mrgreen:

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Vorschläge und Ideen gesucht für Slotmaschine ;)

Beitrag von True29 »

5 Trommeln a 3 Bilder , Berechnung ganz einfach.
Startpunkte jeder trommel genommen für das 1 Bild , Bild 2 und Bild 3 Werden einfach 200 , bzw 400 pixel runter gesetzt.
i7,12gb ram , Windows 10 ,Purebasic 5.50
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Vorschläge und Ideen gesucht für Slotmaschine ;)

Beitrag von ts-soft »

Wenn Du Dich nicht außerhalb Deines Indexes bewegst, geht es jedenfalls:

Code: Alles auswählen

Procedure Gravity_main()   
  ResizeWindow(#FENSTER_HAUPT, #PB_Ignore, #PB_Ignore, 1500, 850)
  If CreateImage(#BILD_HAUPT, 1500, 850)
    If StartDrawing(ImageOutput(#BILD_HAUPT)) 
      DrawImage(ImageID(#BILD_FRAME), 0, 0)               
      For Z = 0 To 10
        Bild = Bilder(Random(10))
        Draw_Symbol(Bild, Z)   
      Next Z
      
      ;DrawAlphaImage(ImageID(#BILD_PRESCREEN),0,0)       
      StopDrawing()
    EndIf 
    ResizeImage(#BILD_HAUPT, WindowWidth(0), WindowHeight(0))
    ImageGadget(#BILD_GADGET, 0, 0, 1500, 850, ImageID(#BILD_HAUPT)) 
  EndIf   
  
  
  Gewinn = Gewinn(Random(10))
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Vorschläge und Ideen gesucht für Slotmaschine ;)

Beitrag von True29 »

dank dir
i7,12gb ram , Windows 10 ,Purebasic 5.50
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Vorschläge und Ideen gesucht für Slotmaschine ;)

Beitrag von True29 »

Neues Problem um die Bilder zu vergleichen.

Die Bilder 1-15 liegen nun in einem Array mit ihrer ID.

Code: Alles auswählen

For Z = 1 To 15              
Bild = Bilder(Random(10))
Trommel(z) = Bild
Trommel(1) z.b Symbol A
Trommel(2) z.b Symbol B
Trommel(3) z.b Symbol C

Wäre dann die Erste Reihe usw. soll ich nun alle Plätze miteinander Vergleichen ? Oder Fällt wem eine elegantere Art ein.
i7,12gb ram , Windows 10 ,Purebasic 5.50
Antworten