greekmanael Δημοσ. 3 Απριλίου 2015 Δημοσ. 3 Απριλίου 2015 Πριν λίγες εβδομάδες άρχισα να ασχολούμαι με την freebasic , όταν έφτασα στο κομμάτι των γραφικών παρατήρησα μια καθυστέρηση στα γραφικά σαν να τρεμοπαίζουν. Αυτό το πρόβλημα που πιστεύετε ότι οφείλεται; Φταίει η FB,η βιβλιοθήκη(fbgfx.bi) , η δεν έγραψα σωστά τον κώδικα; Πιο κάτω έχω ανεβάσει το παιχνιδάκι μου , αν θέλετε δείτε το για να καταλάβετε καλύτερα το πρόβλημα μου. Ευχαριστώ για τον χρόνο σας , και καλό Πάσχα. https://www.dropbox.com/s/48c8u5eo25nft59/mygame.zip?dl=0 ή mygame.zip Υ.Γ. Αν θέλετε μπορώ να ανεβάσω και τον κώδικα του.
paparovic Δημοσ. 4 Απριλίου 2015 Δημοσ. 4 Απριλίου 2015 Δεν ξέρω freebasic, αν η εφαρμογή σου είναι GDI+ (δηλαδή όχι DirectX κτλ, απλή Windows εφαρμογή) συνήθως το πρόβλημα με το flickering είναι ότι δεν έχεις ενεργοποιήσει το double buffering στις εικόνες. 1
greekmanael Δημοσ. 4 Απριλίου 2015 Μέλος Δημοσ. 4 Απριλίου 2015 (επεξεργασμένο) Διάβασα σε ένα ξένο forum ότι το στην βιβλιοθήκη fbgfx.bi το double buffering/double buffered είναι στο default και ότι το πρόβλημα λύνεται με τις εντολές screenlock() και screenunlock() τοποθετώντας τες γύρο από τις εντολές γραφικών .Το δοκίμασα και το πρόβλημα μου λύθηκε.. https://www.dropbox.com/s/rs0az0bzl7io9vj/mygame2.zip?dl=0 Επεξ/σία 4 Απριλίου 2015 από greekmanael 1
TheELF Δημοσ. 4 Απριλίου 2015 Δημοσ. 4 Απριλίου 2015 Μήπως κάπου στην λούπα σου έχεις κάποια εντολή που καθαρίζει την οθόνη; 1
greekmanael Δημοσ. 4 Απριλίου 2015 Μέλος Δημοσ. 4 Απριλίου 2015 #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.
TheELF Δημοσ. 4 Απριλίου 2015 Δημοσ. 4 Απριλίου 2015 Ε κάθε φορά που η λούπα κάνει cls θα μαυρίσει όλη η οθόνη,κάτι που το αντιλαμβάνεσαι. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα