Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Πριν λίγες εβδομάδες άρχισα να ασχολούμαι με την freebasic , όταν έφτασα στο κομμάτι των γραφικών παρατήρησα μια καθυστέρηση  στα γραφικά σαν να τρεμοπαίζουν. Αυτό το πρόβλημα που πιστεύετε ότι οφείλεται; Φταίει η FB,η βιβλιοθήκη(fbgfx.bi) , η δεν έγραψα σωστά τον κώδικα;  Πιο κάτω έχω ανεβάσει το παιχνιδάκι μου , αν θέλετε δείτε το για να καταλάβετε  καλύτερα το πρόβλημα μου.

Ευχαριστώ για τον χρόνο σας , και καλό Πάσχα.

 

https://www.dropbox.com/s/48c8u5eo25nft59/mygame.zip?dl=0

ή

mygame.zip

 

 

 

 

Υ.Γ. Αν θέλετε μπορώ να ανεβάσω και τον κώδικα του. 

Δημοσ.

Δεν ξέρω freebasic, αν η εφαρμογή σου είναι GDI+ (δηλαδή όχι DirectX κτλ, απλή Windows εφαρμογή) συνήθως το πρόβλημα με το flickering είναι ότι δεν έχεις ενεργοποιήσει το double buffering στις εικόνες.

  • Like 1
Δημοσ. (επεξεργασμένο)

Διάβασα σε ένα ξένο forum ότι το στην βιβλιοθήκη fbgfx.bi το  double buffering/double buffered είναι στο default και ότι το πρόβλημα λύνεται με τις εντολές screenlock() και screenunlock() τοποθετώντας τες γύρο από τις εντολές γραφικών .Το δοκίμασα και το πρόβλημα μου λύθηκε..


 


https://www.dropbox.com/s/rs0az0bzl7io9vj/mygame2.zip?dl=0


Επεξ/σία από greekmanael
  • Like 1
Δημοσ.

#include "fbgfx.bi"
Using FB
screenres 300,465,8,2
randomize
     rem ----------------
type character
    live as integer = 0
    xmove as integer= 150
    ymove as integer= 450
    speedmove as integer = 1
    radius as byte = 15
end type
type  enemyp
    radius as byte = 15
    xmove as integer= 100
    ymove as integer= 100
    speedmove as integer = 1
    end type
     rem ------------------
dim shared player as character
dim shared enemy as enemyp
dim shared tuxaia8esh as integer
     rem ------------------
     print "press a for left d for right"
     sleep 5000
     rem ------------------
sub paixths ()
    circle (player.xmove,player.ymove),player.radius,3
    circle (enemy.xmove,enemy.ymove),enemy.radius,5
          
      if multikey(sc_d) and player.xmove<300 then player.xmove =player.xmove + player.speedmove
      if multikey(sc_a)and player.xmove >0 then player.xmove =player.xmove - player.speedmove
     
    
    
     if ((player.xmove<enemy.xmove+20) and (player.ymove<enemy.ymove+20)) and ((player.xmove>enemy.xmove-20) and (player.ymove>enemy.ymove-20)) then
         player.live=player.live + 1 
        end if
    end sub
    rem -----------------
sub ex8ros ()
    
     enemy.ymove =enemy.ymove + enemy.speedmove
     if enemy.ymove>460 then
         enemy.ymove = 0
         tuxaia8esh = int((299*rnd)+1)
         enemy.xmove = tuxaia8esh
     end if
     
    end sub
sub grafika()
    
    screenlock()
    cls
    print player.live
    line (0,460)-(300,460),12
    paixths
    ex8ros
    screenunlock()
   
    
    end sub
    rem----------------
do
 

grafika 

sleep 1
loop 

Ναι τηn cls.

 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...