Latausteksti/viiva
Latausteksti/viiva
Elikkä ongelmana on miten saan pelin alkuuni lataus viivan, jonka keskellä lukee prosentti määrä ja teksti ladataan?
Re: Latausteksti/viiva
Vaikka näin.
Sitten seuraavaksi voisin yrittää auttaa oikeastikin, vaikka viestisi kieliasu provosoikin yllä olevan kaltaiseen vastaukseen.
Katso manuaalista kohdat Box, Color ja Text ja käytä muuttujaa ja aivoja. Näin pitäisi onnistua yksinkertainen palkki.
Code: Select all
latausviiva = loadobject ("media\latausviiva.bmp")
locate 160, 120
addtext "prosentti määrä ja teksti ladataan"
drawscreen
waitkey
Katso manuaalista kohdat Box, Color ja Text ja käytä muuttujaa ja aivoja. Näin pitäisi onnistua yksinkertainen palkki.
Re: Latausteksti/viiva
Onneksi en itse provosoitunut ollenkaan, joten pystyin juuri ja juuri ojentamaan auttavan käteni.
Latauspalkki toimii näin:
Meillä on kutsukerrat "k". Tämä kertoo kuinka monta kertaa _päivitämme_ latauspalkin.
Sitten meillä on muuttuja "i", joka kertoo monesko kutsu (eli päivitys) on menossa.
Tästä saamme prosenttimäärän p#, joka on: p# = i / k. Tulos on desimaaliluku väliltä 0-1. Jos haluamme sen prosenteiksi, kerromme sadalla.
Joka kutsukerralla teemme tuon matemaattisen toimituksen ja piirrämme näytölle tuloksen. Voimme käyttää myös muita visuaalisia tehokeinoja. Alapuolella olevassa esimerkissä piirrän laatikon, joka kasvaa prosenttien myötä. Eli suurinpiirtein näin:
Kokonaisleveys on leveys, kun prosentit ovat 1, eli kun lataus on suoritettu.
Tässä koodi jota EI kuulu kopioida suoranaan, vaan lukea läpi ja opetella.
Edit. typos.
Latauspalkki toimii näin:
Meillä on kutsukerrat "k". Tämä kertoo kuinka monta kertaa _päivitämme_ latauspalkin.
Sitten meillä on muuttuja "i", joka kertoo monesko kutsu (eli päivitys) on menossa.
Tästä saamme prosenttimäärän p#, joka on: p# = i / k. Tulos on desimaaliluku väliltä 0-1. Jos haluamme sen prosenteiksi, kerromme sadalla.
Joka kutsukerralla teemme tuon matemaattisen toimituksen ja piirrämme näytölle tuloksen. Voimme käyttää myös muita visuaalisia tehokeinoja. Alapuolella olevassa esimerkissä piirrän laatikon, joka kasvaa prosenttien myötä. Eli suurinpiirtein näin:
Code: Select all
Box x, y, kokonaisleveys * p#, korkeus.
Tässä koodi jota EI kuulu kopioida suoranaan, vaan lukea läpi ja opetella.
Code: Select all
FrameLimit 40
Function LoadBar( _valmiina, _määrä# )
ClearText
_pros# = _valmiina / _määrä 'kuinka monta prosenttia valmiina...
_width# = ScreenWidth() * _pros# 'laajeneva laatikko
_height = 20 'laatikon korkeus
_cX = ScreenWidth() / 2 - _width / 2 'laatikon "kekusta" ruudulla
_cY = ScreenHeight() / 2 - _height / 2
Color cbGreen
Box _cX, _cY, _width, _height 'piirretään laatikko
Color cbWhite 'kirjoitetaan prosenttimäärä
_txt$ = "Loading ... " + Int( _pros# * 100 ) + " %"
Locate ScreenWidth() / 2 - TextWidth( _txt$ ) / 2, _cY
AddText _txt$
DrawScreen
EndFunction
//Päivitetään latausboksi. HUOM: mitä useammin päivitetään, sitä hitaammin itse lataus menee (koska kutsumme
//DrawScreeniä).
//Tärkeää: LoadBar-funktiolle syötetään "i", eli missä kohtaa ollaan, sekä LATAUSMÄÄRÄ, joka kertoo
//kuinka monta kertaa kutsumme LoadBaria kokonaisuudessaan.
LATAUSMÄÄRÄ = 525
For i = 1 To LATAUSMÄÄRÄ
If i Mod 5 = 0 Then 'kutsumme vain joka viidennellä latauspalkkia. Tämä kertoo palkin "sulavuuden"
LoadBar( i, LATAUSMÄÄRÄ )
EndIf
Next i
Text 20, 20, "Lataus valmis!"
DrawScreen
WaitKey
Re: Latausteksti/viiva
Miten saa niin että latauspalkki menee koko sen ajan kun mediaa ladataan siis ei näin
Code: Select all
ukko=loadobject("media/guy.bmp")
box 0,0,10,10
drawscreen
pati=loadobject("media/bullet.bmp")
box 0,0,20,10
drawscreen
ääni=loadsound("media/blaster.wav")
box 0,0,30,10
drawscreen
waitkey
Re: Latausteksti/viiva
Saat tuon aikaiseksi pienellä huijauksella. Eli päivität latauspalkkia vaikka mitään ei oikeastaan päivitysten välissä ladata.
Seuraavassa esimerkissä päivityspalkkia päivitetään 100 kertaa, mutta itse latauksia on vain viisi, siroteltuna tasaisesti päivitysten väliin.
Edit. pientä sekoilua latauksessa...
Seuraavassa esimerkissä päivityspalkkia päivitetään 100 kertaa, mutta itse latauksia on vain viisi, siroteltuna tasaisesti päivitysten väliin.
Code: Select all
FrameLimit 40
Function LoadBar( _valmiina, _määrä# )
ClearText
_pros# = _valmiina / _määrä 'kuinka monta prosenttia valmiina...
_width# = ScreenWidth() * _pros# 'laajeneva laatikko
_height = 20 'laatikon korkeus
_cX = ScreenWidth() / 2 - _width / 2 'laatikon "kekusta" ruudulla
_cY = ScreenHeight() / 2 - _height / 2
Color cbGreen
Box _cX, _cY, _width, _height 'piirretään laatikko
Color cbWhite 'kirjoitetaan prosenttimäärä
_txt$ = "Loading ... " + Int( _pros# * 100 ) + " %"
Locate ScreenWidth() / 2 - TextWidth( _txt$ ) / 2, _cY
AddText _txt$
DrawScreen
EndFunction
//Päivitetään latausboksi. HUOM: mitä useammin päivitetään, sitä hitaammin itse lataus menee (koska kutsumme
//DrawScreeniä).
//Tärkeää: LoadBar-funktiolle syötetään "i", eli missä kohtaa ollaan, sekä LATAUSMÄÄRÄ, joka kertoo
//kuinka monta kertaa kutsumme LoadBaria kokonaisuudessaan.
LATAUSMÄÄRÄ = 100
For i = 1 To LATAUSMÄÄRÄ
If i = 20 Then
ukko1 = LoadObject( "media\guy.bmp" )
' ShowObject ukko1, OFF
PositionObject ukko1, Rand( -100, 100 ), Rand( -100, 100 )
ElseIf i = 40 Then
ukko2 = LoadObject( "media\guy.bmp" )
' ShowObject ukko2, OFF
PositionObject ukko2, Rand( -100, 100 ), Rand( -100, 100 )
ElseIf i = 60 Then
ukko3 = LoadObject( "media\guy.bmp" )
' ShowObject ukko3, OFF
PositionObject ukko3, Rand( -100, 100 ), Rand( -100, 100 )
ElseIf i = 80 Then
ukko4 = LoadObject( "media\guy.bmp" )
' ShowObject ukko4, OFF
PositionObject ukko4, Rand( -100, 100 ), Rand( -100, 100 )
ElseIf i = 100 Then
ukko5 = LoadObject( "media\guy.bmp" )
' ShowObject ukko5, OFF
PositionObject ukko5, Rand( -100, 100 ), Rand( -100, 100 )
EndIf
LoadBar( i, LATAUSMÄÄRÄ )
Next i
ClearText()
DrawScreen
WaitKey
Re: Latausteksti/viiva
wanhalla CoolBasicilla ei voi tehdä aitoa ja sulavaa lataus palkkia, koska CB:ssä ei voi tehdä kahta asiaa yhtä aikaa. Eli kun lataus palkki liikkuu, ohjelma todellakin lataa jotain, eikä vain piirrä lataus palkkia. Tähän tarvittaisiin säikeitä, joita on hyvin, hyvin harvassa tulkatussa kielessä.
-On selkeästi impulsiivinen koodaaja joka...
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Latausteksti/viiva
Luonnollisesti voi itse avata kuvatiedoston ja tietyn tavumäärän välein päivitellä palkkia kopioinnin ohessa, mutta en tiedä onko se sen arvoista. Itse pistin joskus maaston tai vastaavan precalcciin palkin, se on toisaalta hivenen suoraviivaisempaa kun for-looppi on olemassa jo valmiiksi :)
Eikä tunnu kaupallisissakaan peleissä kovin hyvät latauspalkit yleensä olevan, hyppivät eteenpäin vähän miten sattuu. CB-pelissä latauspalkki on kuitenkin vähän turhake, ladattavaa on yleensä niin vähän muutenkin.
Eikä tunnu kaupallisissakaan peleissä kovin hyvät latauspalkit yleensä olevan, hyppivät eteenpäin vähän miten sattuu. CB-pelissä latauspalkki on kuitenkin vähän turhake, ladattavaa on yleensä niin vähän muutenkin.
Re: Latausteksti/viiva
Joo, yleensähän CB-pelit lataavat tavaransa alle puolessa sekunnissa, ei palkkia sinänsä tarvita. Isoimmissa projekteissa latauspalkki on ihan hyvä, kun ihminen kyllästyy helposti mustaa ruutua tuijottaessa.koodaaja wrote:...Eikä tunnu kaupallisissakaan peleissä kovin hyvät latauspalkit yleensä olevan, hyppivät eteenpäin vähän miten sattuu. CB-pelissä latauspalkki on kuitenkin vähän turhake, ladattavaa on yleensä niin vähän muutenkin.
-
- Advanced Member
- Posts: 308
- Joined: Tue Nov 25, 2008 8:06 pm
- Contact:
Re: Latausteksti/viiva
Yksi tapaushan jossa latauspalkkia käytetään, on esim. pyöritettäessä kuvia valmiiksi taulukkoon. Tällöinhän latauspalkkia voidaan päivittää vaikkapa jokaisen yksittäisen kuvan jälkeen.
a.k.a. Gehock
Re: Latausteksti/viiva
Tein tämmösen
Code: Select all
//LoadBar Funktio muokannut Timpe99
_r=255
Function lb( _valmiina, _määrä#=50 )
ClearText
_pros# = _valmiina / _määrä 'kuinka monta prosenttia valmiina...
_width# = ScreenWidth() * _pros# 'laajeneva laatikko
_height = 20 'laatikon korkeus
_cY = ScreenHeight() / 2 - _height / 2
_g=_valmiina*5
_r=_r-_g
Color _r,_g,0
Box 0, _cY, _width, _height 'piirretään laatikko
Color cbBlue
Box 0,_cY,ScreenWidth(),20,0
Color cbWhite 'kirjoitetaan prosenttimäärä
_txt$ = "Loading ... " + Int( _pros# * 100 ) + " %"
Locate ScreenWidth() / 2 - TextWidth( _txt$ ) / 2, _cY
AddText _txt$
EndFunction
////////////////////////////////////////////////
/*
Kun käytät lb funtiota niin ON
ärsyttävää kun pitää kaikkiin kohtiin yksitellen
kirjoittaa edellistä suurempi luku
*/
remstart
näin:
hiiri=LoadImage("media/cursor.bmp")
lb(1)
DrawScreen
hiiri2=LoadImage("media/crosshair.bmp")
lb(2)
DrawScreen
hiirenpää=MakeImage(1,1)
lb(3)
remend
/*
ratkaisu ON tässä:
*/
//Tiedosto jossa on koodi
//esim. hiiri=LoadImage("dmedia/cursor.bmp")
//lb(1)
//DrawScreen
//hiiri2=LoadImage("dmedia/crosshair.bmp")
//lb(1)
//DrawScreen
//hiirenpää=MakeImage(1,1)
//lb(1)
lähde$="koodi.txt"
//Tiedosto johon tulee valmis koodi
//esim. hiiri=LoadImage("media/cursor.bmp")
//lb(1)
//DrawScreen
//hiiri2=LoadImage("media/crosshair.bmp")
//lb(2)
//DrawScreen
//hiirenpää=MakeImage(1,1)
//lb(3)
kohde$="koodi2.txt"
//Avataan tiedosto jossa on koodi
f=OpenToRead(lähde)
//Luodaan tiedosto johon tulee valmis koodi
f2=OpenToWrite(kohde)
//Silmukka
While Not EOF(f)
i+1
// Rivi jolla on lb funktio
rivi$=ReadLine(f)
//Drawscreen
turha1$=ReadLine(f)
//SCREEN 1024,600,0,0
turha2$=ReadLine(f)
//Kirjoitetaan rivit kohde tiedostoon
WriteLine f2,Replace(rivi,"1",Str(i))
WriteLine f2,turha1
WriteLine f2,turha2
Wend
//Valmis!
Print "Valmis!"
WaitKey
Re: Latausteksti/viiva
Mitäs se tekee? En nyt jaksa lähteä kokeilemaan kun tulee "error" ja kun ne korjaa tulee "cannot open file...".