#Sprite object not initialized

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

#Sprite object not initialized

Beitrag von Thomas »

Hallo
wieso bringt PureBasic immer die Fehlermeldung
#Sprite object not initialized
? (Nur bei einem Sprite, hab ich mit "<<----------" im Code makiert)
Die anderen Sprites gehen doch auch!

Code: Alles auswählen

;                                                 ################
;                                                 #              #
;                                                 #   Dreschen   #
;                                                 #              #
;                                                 ################
;****************************************************************************************************************************
; Windowsfenster erstellen

If OpenWindow(0, 312, 184, 400, 400,#PB_WINDOW_SYSTEMMENU,"Dreschen")

LoadImage(5, "Grafik\Bild.bmp")

CreateGadgetList(WindowID())

  ImageGadget (0, 23, 10, 352, 260, UseImage(5))
  ButtonGadget(1, 140, 280, 120, 30, "Spiel Starten")
  ButtonGadget(2, 140, 350, 120, 30, "Verlassen"    )

Repeat
  EventID.l = WaitWindowEvent()

 If EventID = #PB_EventGadget
   Select EventGadgetID()
    Case 1
     Goto Start
    Case 2
     EventID = #PB_EventCloseWindow
   EndSelect
 EndIf

Until EventID = #PB_EventCloseWindow

EndIf

End

;****************************************************************************************************************************
; Vollbildfenster erstellen
Start:
If InitSprite() = 0
MessageRequester("Fehler", "Konnte dx nicht finden", 0)
EndIf

If InitKeyboard() = 0
MessageRequester("Fehler", "Konnte dx nicht finden", 0)
EndIf

If OpenScreen(800, 600, 32, "Dreschen")

Else
MessageRequester("Fehler", "Konnte kein Vollbild erstellen", 0)
EndIf

Anfang:

;****************************************************************************************************************************

; Grafiken laden, Koordinaten
  LoadSprite(12, "Grafik\Gewonnen.bmp",      0)
  LoadSprite(15, "Grafik\Verloren.bmp",      0)
  LoadSprite(19, "Grafik\Ziel.bmp",          0)
  LoadSprite(25, "Grafik\Stein_1.bmp",       0)
  LoadSprite(32, "Grafik\Stein_2.bmp",       0)
  LoadSprite(55, "Grafik\Wildschwein.bmp",   0)

  For car = 1 To 4
  LoadSprite(car, "Grafik\Maschine_"+Str(car)+".bmp", 0)
  Next

  LoadSprite(back,"Grafik\Feld_1.bmp",  0)

  car = 0

  position_x = 350
  position_y = 450
  aa =  0
  ab =  50
  ac =  100
  ad =  150
  ae =  200
  af =  250
  ag =  300
  ah =  350
  ai =  400
  aj =  450
  ak =  500
  al =  550
  am =  600
  an =  650
  ao =  700
  ap =  750
  aq =  800

  ba =  500
  bb =  450
  bc =  300
  bd =  200
  be =  100
  bf =  50
  bg = -100
  bh = -150
  bi = -200
  bj = -300
  bk = -350
  bl = -400
  bn = -500
  bm = -550
  bo = -600
  bp = -650
  bq = -700
  br = -750
  bs = -800
  bt = -850
  bu = -950
  bv = -1000
  bw = -1050
  bx = -1150
  by = -1250
  bz = -1300
  ca = -1350
  cb = -1400
  cc = -1450
  cd = -1500
  ce = -1550
  cf = -1650
  cg = -1750
  ch = -1850
  ci = -1900
  cj = -1950
  ck = -2000
  cl = -2050
  cm = -2100
  cn = -2150
  co = -2300
  cp = -2350
  cq = -2400
  cr = -2500
  cs = -2550
  ct = -2600
  cu = -2650
  cv = -2700
  cw = -2850
  cx = -2900
  cy = -2950
  cz = -3000
  da = -3100
  db = -3200
  dc = -3300
  dd = -3350
  de = -3450
  df = -3500
  dg = -3550
  dh = -3650
  di = -3700
  dj = -3750
  dk = -3850
  dl = -4000
  dm = -4100
  abd = 2
  abf = 2
  abg = 1
  abh = 1
  ff = 700
  gg = 200

  Repeat

; Hintergrund erstellen

    For   BackX = 0   To 800 Step 72
      For BackY = -72 To 600 Step 72
          DisplaySprite(back, BackX, BackY + ScrollY)
      Next
    Next

    If ScrollDelay = 0
       ScrollY + abd
       ScrollDelay = 0
    Else
       ScrollDelay - 1
    EndIf

    If ScrollY > 71
       ScrollY = 0
    EndIf

    Gosub Stein
    Gosub Steine
    Gosub Sau
    Gosub Ziel
    Gosub Kollision

    ba + abd
    bb + abd
    bc + abd
    bd + abd
    be + abd
    bf + abd
    bg + abd
    bh + abd
    bi + abd
    bj + abd
    bk + abd
    bl + abd
    bm + abd
    bn + abd
    bo + abd
    bp + abd
    bq + abd
    br + abd
    bs + abd
    bt + abd
    bu + abd
    bv + abd
    bw + abd
    bx + abd
    by + abd
    bz + abd
    ca + abd
    cb + abd
    cc + abd
    cd + abd
    ce + abd
    cf + abd
    cg + abd
    ch + abd
    ci + abd
    cj + abd
    ck + abd
    cl + abd
    cm + abd
    cn + abd
    co + abd
    cp + abd
    cq + abd
    cr + abd
    cs + abd
    ct + abd
    cu + abd
    cv + abd
    cw + abd
    cx + abd
    cy + abd
    cz + abd
    da + abd
    db + abd
    dc + abd
    dd + abd
    de + abd
    df + abd
    dg + abd
    dh + abd
    di + abd
    dj + abd
    dk + abd
    dl + abd
    dm + abd
    ff - 4
    gg + 2

  ; Animation des Mähdreschers

    If car = 4
       car = 1
    EndIf
       car + abg

    DisplayTransparentSprite(car, position_x, position_y)
    FlipBuffers()

;****************************************************************************************************************************

; Tastenabfrage

    ExamineKeyboard()

    If KeyboardPushed(#PB_Key_Right)
      position_x + abf
      If position_x > 700
         position_x = 700
      EndIf
    EndIf

    If KeyboardPushed(#PB_Key_Left)
      position_x - abf
      If position_x < 0
         position_x = 0
      EndIf
    EndIf

    If KeyboardPushed(#PB_Key_Up)
      position_y - abh
      If position_x < 0
         position_y = 0
      EndIf 
    EndIf

    If KeyboardPushed(#PB_Key_Down)
      position_y + abh
      If position_y > 450
         position_y = 450
      EndIf
    EndIf
    
    If KeyboardPushed(#PB_Key_F2)
    Goto Anfang
    EndIf

    If KeyboardPushed(#PB_Key_Escape)
    End
    EndIf

  ForEver

;****************************************************************************************************************************
; Erstellen der Steine

Stein:

   DisplayTransparentSprite(25, am, ba)
   DisplayTransparentSprite(25, af, bb)
   DisplayTransparentSprite(25, ab, bd)
   DisplayTransparentSprite(25, ai, be)
   DisplayTransparentSprite(25, ap, bf)
   DisplayTransparentSprite(25, ag, bi)
   DisplayTransparentSprite(25, aa, bj)
   DisplayTransparentSprite(25, ad, bk)
   DisplayTransparentSprite(25, an, bm)
   DisplayTransparentSprite(25, ap, bh)
   DisplayTransparentSprite(25, ak, bo)
   DisplayTransparentSprite(25, ah, bp)
   DisplayTransparentSprite(25, ai, bs)
   DisplayTransparentSprite(25, ad, bt)
   DisplayTransparentSprite(25, ap, bu)
   DisplayTransparentSprite(25, ai, bv)
   DisplayTransparentSprite(25, ai, bz)
   DisplayTransparentSprite(25, af, cb)
   DisplayTransparentSprite(25, ab, cc)
   DisplayTransparentSprite(25, ad, ce)
   DisplayTransparentSprite(25, ah, cf)
   DisplayTransparentSprite(25, ap, ci)
   DisplayTransparentSprite(25, af, ck)
   DisplayTransparentSprite(25, aa, cl)
   DisplayTransparentSprite(25, ah, cm)
   DisplayTransparentSprite(25, ao, cm)
   DisplayTransparentSprite(25, ah, cp)
   DisplayTransparentSprite(25, ad, cs)
   DisplayTransparentSprite(25, ag, cv)
   DisplayTransparentSprite(25, ab, cw)
   DisplayTransparentSprite(25, an, cw)
   DisplayTransparentSprite(25, ak, cx)
   DisplayTransparentSprite(25, ab, cy)
   DisplayTransparentSprite(25, an, cz)
   DisplayTransparentSprite(25, ae, da)
   DisplayTransparentSprite(25, ai, db)
   DisplayTransparentSprite(25, ap, db)
   DisplayTransparentSprite(25, al, de)
   DisplayTransparentSprite(25, af, df)
   DisplayTransparentSprite(25, ab, dg)
   DisplayTransparentSprite(25, aa, dh)
   DisplayTransparentSprite(25, ak, di)
   DisplayTransparentSprite(25, an, dj)
   DisplayTransparentSprite(25, ac, dk)
   DisplayTransparentSprite(25, ah, dl)
   DisplayTransparentSprite(25, ap, dl)

Return

Steine:

   DisplayTransparentSprite(32, ab, bb)
   DisplayTransparentSprite(32, ao, bc)
   DisplayTransparentSprite(32, al, bd)
   DisplayTransparentSprite(32, ae, bf)
   DisplayTransparentSprite(32, ao, bg)
   DisplayTransparentSprite(32, ac, bh)
   DisplayTransparentSprite(32, am, bi)
   DisplayTransparentSprite(32, al, bl)
   DisplayTransparentSprite(32, ac, bh)
   DisplayTransparentSprite(32, ab, bq)
   DisplayTransparentSprite(32, an, br)
   DisplayTransparentSprite(32, ae, bw)
   DisplayTransparentSprite(32, ah, bx)
   DisplayTransparentSprite(32, am, bx)
   DisplayTransparentSprite(32, ab, by)
   DisplayTransparentSprite(32, ao, ca)
   DisplayTransparentSprite(32, aj, cd)
   DisplayTransparentSprite(32, ao, cf)
   DisplayTransparentSprite(32, ab, cg)
   DisplayTransparentSprite(32, ad, ch)
   DisplayTransparentSprite(32, ak, cj)
   DisplayTransparentSprite(32, ac, cn)
   DisplayTransparentSprite(32, ac, co)
   DisplayTransparentSprite(32, am, co)
   DisplayTransparentSprite(32, ao, cp)
   DisplayTransparentSprite(32, ak, cq)
   DisplayTransparentSprite(32, ak, cr)
   DisplayTransparentSprite(32, an, cs)
   DisplayTransparentSprite(32, ab, ct)
   DisplayTransparentSprite(32, af, cu)
   DisplayTransparentSprite(32, ae, cw)
   DisplayTransparentSprite(32, af, cz)
   DisplayTransparentSprite(32, al, da)
   DisplayTransparentSprite(32, ab, db)
   DisplayTransparentSprite(32, ae, dc)
   DisplayTransparentSprite(32, an, dd)
   DisplayTransparentSprite(32, aj, df)
   DisplayTransparentSprite(32, af, di)
   DisplayTransparentSprite(32, af, dk)
   DisplayTransparentSprite(32, al, dk)
   DisplayTransparentSprite(32, ad, dl)
   DisplayTransparentSprite(32, al, dl)

Return

Sau:

If position_y = 300
DisplayTransparentSprite(55, ff, gg) ;<<----------
EndIf
Return

Ziel:

   DisplaySprite(19, aa, dm)

Return

Kollision:

If SpritePixelCollision(car, position_x, position_y, 25, am, ba): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, af, bb): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ab, bd): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ai, be): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ap, bf): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ag, bi): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, aa, bj): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ad, bk): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, an, bm): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ap, bh): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ak, bo): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ah, bp): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ai, bs): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ad, bt): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ap, bu): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ai, bv): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ai, bz): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, af, cb): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ab, cc): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ad, ce): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ah, cf): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ap, ci): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, af, ck): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, aa, cl): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ah, cm): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ao, cm): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ah, cp): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ad, cs): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ag, cv): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ab, cw): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, an, cw): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ak, cx): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ab, cy): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, an, cz): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ae, da): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ai, db): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ap, db): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, al, de): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, af, df): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ab, dg): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, aa, dh): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ak, di): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, an, dj): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ac, dk): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ah, dl): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 25, ap, dl): Goto Schleife: EndIf

If SpritePixelCollision(car, position_x, position_y, 32, ab, bb): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ao, bc): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, al, bd): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ae, bf): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ao, bg): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ac, bh): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, am, bi): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, al, bl): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ac, bh): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ab, bq): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, an, br): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ae, bw): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ah, bx): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, am, bx): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ab, by): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ao, ca): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, aj, cd): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ao, cf): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ab, cg): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ad, ch): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ak, cj): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ac, cn): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ac, co): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, am, co): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ao, cp): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ak, cq): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ak, cr): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, an, cs): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ab, ct): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, af, cu): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ae, cw): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, af, cz): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, al, da): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ab, db): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ae, dc): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, an, dd): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, aj, df): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, af, di): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, af, dk): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, al, dk): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, ad, dl): Goto Schleife: EndIf
If SpritePixelCollision(car, position_x, position_y, 32, al, dl): Goto Schleife: EndIf

If SpritePixelCollision(car, position_x, position_y, 19, aa, dm): Goto Schleifen: EndIf

Return

Schleife:

DisplaySprite(15, 250, 210)

abd = 0
abf = 0
abg = 0
abh = 0

Return

Schleifen:

DisplaySprite(12, 250, 210)
abd = 0
abf = 0
abg = 0
abh = 0

Return
Und die Stellen, die "car" schon abgefahren hat sollen als Stoppelfeld erscheinen, wie mach ich das am besten?
Danke schon im Voraus!!!!

:|

Hab die 3.3 Version
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Kann ich nicht nachvollziehen . Hab aber auch nicht Deine Bilder sondern selbstgemalte. Könnte somit am Bildformat selber liegen.

Wegen der verschiedenen Darstellung des Feldes solltest Du Dich wohl
langsam um die Möglichkeiten der dynamischen Listen kümmern.

Wenn Du Dir die Position und Kennung jedes einzelnen Feld-Sprites
merkst, dann kannst Du dort auch anderes Bild darstellen, wenn der
Trecker da rübergerauscht ist (oder das Wildschein :))
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Wieso soll das am Format liegen. Sind doch alles Bitmap.
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

Beitrag von ts-soft »

Du solltest als erstes das laden checken:

Code: Alles auswählen

; Grafiken laden, Koordinaten
  Debug LoadSprite(12, "Grafik\Gewonnen.bmp",      0)
  Debug LoadSprite(15, "Grafik\Verloren.bmp",      0)
  Debug LoadSprite(19, "Grafik\Ziel.bmp",          0)
  Debug LoadSprite(25, "Grafik\Stein_1.bmp",       0)
  Debug LoadSprite(32, "Grafik\Stein_2.bmp",       0)
  Debug LoadSprite(55, "Grafik\Wildschwein.bmp",   0) 
Wenn überall mehr als 0 angezeigt wird, sehen wir weiter :wink:
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
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

Thomas Obermeier hat geschrieben:Wieso soll das am Format liegen. Sind doch alles Bitmap.
Bitmap != Bitmap

Es gibt verschiedene Versionen des Bitmap-Formats, eine eindeutige Definition gibt es da nicht. Manche Programme speichern Bitmaps nicht korrekt ab, was zu Fehlern führen kann. Probier mal, die Bilder mit einem anderen Programm umzuspeichern.
Antworten