Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [blitzmax] Errore in blitmax

    Non so quanto sia sconosciuto questo linguaggio che ho iniziato da poco ad usare. Ma la sintassi è molto semplice e spero capirete anche non conoscendo il linguaggio... Ho un problema con il ciclo for, e dato che la documentazione non abbonda e i forum specifici del linguaggio non sono free ho deciso di postare qui...

    Il primo codice mi visualizza 19 immagini sullo schermo...
    Il secondo solo l'ultima.... Cioe', se spezzetto un ciclo for in 2 , cambiando indice il programma stampa la stessa immagine 19 volte sovrapponendole...


    codice:
    Graphics 800,600
    Type rospo 
    Global x:Int
    Global y:Int
    Global image:TImage
    End Type
    Global R:rospo [19]
    Cls
    For Local i=0 To 18
     R[i] = New rospo
     R[i].x = Rand(2,798)
     R[i].y = Rand(2,598) 
     R[i].image = LoadImage(LoadBank("pascal.bmp"))
     DrawImage(R[i].image,R[i].x,R[i].y)
     Print "x: " + R[i].x + " - y: " + R[i].y
    Next
    Flip
    While Not KeyDown(Key_enter)
     
    Wend

    codice:
    Graphics 800,600
    Type rospo 
    Global x:Int
    Global y:Int
    Global image:TImage
    End Type
    Global R:rospo [19]
    Cls
    For Local i=0 To 18
     R[i] = New rospo
     R[i].x = Rand(2,798)
     R[i].y = Rand(2,598) 
     R[i].image = LoadImage(LoadBank("pascal.bmp"))
    Next
    For Local v=0 To 18
     DrawImage(R[v].image,R[v].x,R[v].y)
     Print "x: " + R[v].x + " - y: " + R[v].y
    Next  
    Flip
    While Not KeyDown(Key_enter)
     
    Wend
    I due programmi dovrebbero avere lo stesso output.... Ma non è cosi'... Cosa potrebbe cambiare?
    Sono venuto qui perché confido in questo forum... ty

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Ma Rand è uguale in più esecuzioni? Altrimenti non avranno mai lo stesso output...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Ma Rand è uguale in più esecuzioni? Altrimenti non avranno mai lo stesso output...
    No no è sempre diverso...

    io credo che il problema sia dovuto dal fatto che solo l'ultimo loadimage detiene veramente l'immagine (dato che è sempre la stessa)
    E quindi solo il suo print funziona...
    Sto cercando da giorni altri esempi in giro da cui capire il problema, ma sembra che io stia facendo giusto e mi sfugga qualcosa...

    Grazie...

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da Sogeking_87 Visualizza il messaggio
    No no è sempre diverso...

    io credo che il problema sia dovuto dal fatto che solo l'ultimo loadimage detiene veramente l'immagine (dato che è sempre la stessa)
    E quindi solo il suo print funziona...
    Sto cercando da giorni altri esempi in giro da cui capire il problema, ma sembra che io stia facendo giusto e mi sfugga qualcosa...

    Grazie...
    Non credo proprio dato che LoadBank carica tutto in memoria...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Vi propongo il mio problema ufficiale.... Io vorrei creare dei sprites nel mio gioco , ad intervalli di 5 - 20 secondi l'uno dall'altro... Il problema è che , non appena si crea uno sprite, il precedente scompare.... Non so piu' dove sbattere la testa... Spero in un miracolo...

    codice:
    Graphics 800,600
    Global image:TImage = LoadImage("pascal.bmp")
    Global endtime:Int
    Global spawn:Int = 1
    Global PasList:TList = CreateList()
    Type Pascal 
     Global x#
     Global y#
     Global dir:Int
     Global speed#
     
     Function crea:Pascal()
      Local p:Pascal = New Pascal
      p.x = Rand(50,750)
      p.y = Rand(400,550)
      p.dir = Rand(0,360)
      p.speed = RndFloat() + 0.2
      Return p  
     End Function  
    End Type
    While Not KeyDown(Key_escape) 
     Cls
     
     If spawn=1 
      endtime = MilliSecs() + Rand(5000,20000)
      Local pas:Pascal = Pascal.crea()
      ListAddLast PasList , pas
      spawn=0
     EndIf
     
     If MilliSecs() > endtime 
      spawn=1
     EndIf 
                                                           'fà muovere i pascal 
     For pas:Pascal=EachIn PasList
      If pas.x => 750 pas.dir=Rand(90,270)
      If pas.y => 550 pas.dir=Rand(180,360)
      If pas.x <= 50 pas.dir=Rand(0,90)
      If pas.y <= 400 pas.dir=Rand(0,180)
      pas.x:+pas.speed*Cos(pas.dir)
      pas.y:+pas.speed*Sin(pas.dir)
      DrawImage(image,pas.x,pas.y)
     Next
     
     Flip
           
    Wend

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.