CoolBasic V3: Esittely
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: CoolBasic? kuollut? eheei ole...
Oliot helpottavat ohjelmointia, kun täytyy hallita suuria määriä tietoa. Luokat voivat periä toisiaan, eli voit tehdä luokan nisäkäs ja periyttää luokat koira ja kotikissa siitä. Kaikesta tulee yksinkertaista, eikä samoja ominaisuuksia tarvi kirjoittaa uudestaan miljoonalle eri luokalle. Sitten luokkiin pystyy tallentaa taulukoita ilman purkkaa. Sitten on nämä public, private, protect & friend jutut, joista en osaa sanoa mitään. Periytyvyyteen kai nekin vaikuttavat. Sitten on polymorphausta, malleja ja kaikkea mistä joku viisaampi saa kertoa :D
-
- Tech Developer
- Posts: 650
- Joined: Mon Aug 27, 2007 9:51 pm
- Location: Helsinki, Finland
- Contact:
Re: CoolBasic? kuollut? eheei ole...
Oliosyntaksiseen kieleen on esimerkiksi helpompi kirjoittaa kirjastoja, jotka itsessäänkin ovat helppokäyttöisempiä. olioihin nimittäin voi piilottaa kätevästi dataa ja dataa käsitteleviä funktioita sisälle niin, että oliota käyttävän koodarin ei tarvitse tietää olion sisäisestä rakenteesta mitään. Tätä kutsutaan kapseloinniksi.Ruuttu wrote:BTW, mitä eroja oliopohjaisessa syntaksissa on - sen lisäksi että se näyttää erilaiselta? Siis tarkoitan, että tuleeko koodista selkeämpää, onko se tehokkaampaa? Tai miksi ylipäänsä oliopohjainen syntaksi on parempi?
Esimerkiksi ChB:ssä ei ole sisäänrakennettua objektijärjestelmää kuten CB:ssä, mutta ChB:n viestiketjusta löytyy jo useampia oliokirjastoja CB:n objekteja ja animaatioita vastaaville rakenteille. Jutun hienous on siinä, että voit käyttää systeemiä miettimättä sitä, mitenkäs se kuvien piirto ja kierto tehdään tai miten määrätyssä kulmassa liikkuminen lisääkään x- ja y-koordinaatteja, jne..
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES
CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Tech-kehittäjä
CoolBasic Classic, Cool VES
CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
- Zero
- Lead Developer
- Posts: 727
- Joined: Sun Aug 26, 2007 2:30 pm
- Location: Helsinki, Finland
- Contact:
Re: CoolBasic? kuollut? eheei ole...
Voihan sen ladattavaksi jättää, mutta käytännössä sille ei ole olemassa tukea. En ainakaan aio linkittää sitä virallisille sivuille.Kysäisen vaan tässä, että kun CB V3 ilmestyy, kai beta 10.4 jää ladattavaksi? Jotkut kun eivät jaksa/ehdi/viitsi opetella olioita...
Oliot voivat tuntua vieraalta, mutta usko pois, ne ovat oikeasti paljon mukavampia koodata jahka omaksut niiden periaatteen.
Esimerkki:
Code: Select all
' Nykyinen CB
Global ukko
ukko = LoadObject("ukko.PNG")
MoveObject(ukko, 1)
DeleteObject(ukko)
Code: Select all
// Tuleva CB
// Ensin kirjoitetaan luokka
Public Class Hahmo
Private _obj As CBOBJECT3D
Public Function New() // Rakentaja (valinnainen)
_obj.Load("ukko.3DS")
EndFunction
Public Function Kävele(matka As Float)
_obj.Move(0,0,matka)
EndFunction
Public Function Delete() // Purkaja (valinnainen)
_obj.Delete()
EndFunction
EndClass
// Tämä on sitten pääohjelmassa
Dim ukko As New Hahmo
ukko.Kävele(1.0)
Delete ukko
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic
http://www.coolbasic.com/blog
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic
http://www.coolbasic.com/blog
-
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 3:53 pm
- Location: Suomi, Finland
- Contact:
Re: CoolBasic? kuollut? eheei ole...
eikös se ollut niin ettei ole hyvä käyttää ääkkösiä koodatessaan?
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: CoolBasic? kuollut? eheei ole...
Onhan se hyvä totutella koodaamaan silleen. Sitten kun vaihtaa johonkin toiseen kieleen - joka ei hyväksykään skandeja - niin ärsyttävää kun kääntäjä (tai whatever) huutaa kun on kirjoittanut ainakin kahteenkymmeneen kohtaan ääkkös öökkös muuttujia.tuhoojabotti wrote:eikös se ollut niin ettei ole hyvä käyttää ääkkösiä koodatessaan?
- Zero
- Lead Developer
- Posts: 727
- Joined: Sun Aug 26, 2007 2:30 pm
- Location: Helsinki, Finland
- Contact:
Re: CoolBasic? kuollut? eheei ole...
Vaikkei ääkkösiä suositellakaan käytettäväksi koodatessa, se on kuitenkin mahdollista CoolBasicissa. Myös muiden maiden erikoismerkit sallitaan, käytössä on koko UTF8-merkistö.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic
http://www.coolbasic.com/blog
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic
http://www.coolbasic.com/blog
Re: CoolBasic? kuollut? eheei ole...
sitten kun tulee olioita, tullaanko luomaan aina javantapainen pääohjelma(public static void main(....),
ja jos tule niin voiko sen sitten tehä cb tyyliin yksinkertaiseksi, tyyliin gameloop{}.
ja jos tule niin voiko sen sitten tehä cb tyyliin yksinkertaiseksi, tyyliin gameloop{}.
Will the highways on the Internet become more few? --G.W.Bush
-
- Moderator
- Posts: 227
- Joined: Wed Aug 29, 2007 3:55 pm
Re: CoolBasic? kuollut? eheei ole...
Suosisin mainia koska eihän kyseessä välttämäti ole peli vaikka pelintekokielestä onkin kyse.
Re: CoolBasic? kuollut? eheei ole...
Tuli muuten Force Variable Declarationin rinnalle mieleen toinenkin erikoisuus, jolle kelpaisi vaikka nimi Force Strict Variablenames, jolloin ei voisi käyttää ääkkösiä enää muuttujien eikä funktioiden nimissä.
Toteuta funktiot muuten Luan tapaan, eli siis Luassahan jokainen funktio, objekti ja luokka ovat muuttujia, jotka sisältävät k.o. asian muistiosoitteen ja tiedon siitä, mitä tuossa osoitteessa on.
Toteuta funktiot muuten Luan tapaan, eli siis Luassahan jokainen funktio, objekti ja luokka ovat muuttujia, jotka sisältävät k.o. asian muistiosoitteen ja tiedon siitä, mitä tuossa osoitteessa on.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: CoolBasic? kuollut? eheei ole...
Main(). Niinjaa, ihan kiva varmaan. Mutta sinänsä täysin turha, koska se vain monimutkaistaa yksinkertaisia koodeja eikä se monimutkaisia yksinkertaista.
Aloittelijoita ajatellen - kun CB:stä kuitenkin puhutaan - ei olisi IMHO mitenkään erityisen hieno idea. Kun kirjoittaa ensimmäistä ohjelmaansa, ( puhun nyt omasta katsantokannastani, mikä voi täysin poiketa kaikista muista :3 ) ajattelee koodin pötkönä joka suoritetaan.
Alussa ei gosubeista saatikka funkkareista tajua mitään. Olen sitä mieltä, että CB:ssä 'suoritettavaa' koodia saisi olla muuallakin kuin funktioissa. Eli voit käskeä "ukko.Move 2" huoletta miettimättä siitä, onko se mainissa vai ei.
Lisäksi tässä pitäisi heti ruveta ottamaan huomioon myös muuttujien näkyvyysalue (vai mikä se hieno termi olikaan), koska se on kovasti sidoksissa tähän "missä funktiossa ollaan" -kysymykseen. Ja siinä vaiheessa pelottaa jo niin paljon, että siihen se jäikin.
@esa94: "Jee, osaan printata luokkani muistiosoitteen. ..Ja mitä ihmettä minä tästä hyödyn?"
Aloittelijoita ajatellen - kun CB:stä kuitenkin puhutaan - ei olisi IMHO mitenkään erityisen hieno idea. Kun kirjoittaa ensimmäistä ohjelmaansa, ( puhun nyt omasta katsantokannastani, mikä voi täysin poiketa kaikista muista :3 ) ajattelee koodin pötkönä joka suoritetaan.
Alussa ei gosubeista saatikka funkkareista tajua mitään. Olen sitä mieltä, että CB:ssä 'suoritettavaa' koodia saisi olla muuallakin kuin funktioissa. Eli voit käskeä "ukko.Move 2" huoletta miettimättä siitä, onko se mainissa vai ei.
Lisäksi tässä pitäisi heti ruveta ottamaan huomioon myös muuttujien näkyvyysalue (vai mikä se hieno termi olikaan), koska se on kovasti sidoksissa tähän "missä funktiossa ollaan" -kysymykseen. Ja siinä vaiheessa pelottaa jo niin paljon, että siihen se jäikin.
@esa94: "Jee, osaan printata luokkani muistiosoitteen. ..Ja mitä ihmettä minä tästä hyödyn?"
Re: CoolBasic? kuollut? eheei ole...
Käsitellä sitä kuin mitä tahansa muuttujaa, ja silti tietää, mitä muuttujassa on. Jos siis esittelet ensin funktion Jee(), voit myöhemmin käskeä Lol=Jee (ei edes tarvitse sulkuja) ja tällöin muuttuja Lol sisältää funktion Jee, ja sitä voi käyttää yksinkertaisesti komentamalla Lol().koodaaja wrote:@esa94: "Jee, osaan printata luokkani muistiosoitteen. ..Ja mitä ihmettä minä tästä hyödyn?"
Lol.
Re: CoolBasic? kuollut? eheei ole...
Niin, tuota... Näistä muuttujien "näkyvyysalueista" tai mistä lie... Siis mikä pointti siinä on, että joku muuttuja ei "näy" tai ei ole olemassa jossain tietyssä koodilohkossa, tai että voi erikseen säätää, näkyykö muuttuja esim. funktiossa vai ei? Eikö olisi helpompaa, että jos en halua että tuo muuttuja näkyy tuolla, niin enpäs käytä sitä tuolla..? Okei, jos muuttujat olisivat samat kaikkialla, niin funktion sisällä ei voisi käyttää samannimistä muuttujaa kuin muualla koodissa, sillä hommat saattaisivat mennä sekaisin. Mutta eikö se mene vähän vaikeaksi ja aloittelijaepäystävälliseksi, jos kaikki muuttujat näyttävät nollaa koska koodari on unohtanut tehdä niistä "näkyviä" jne?
Näistä asioistahan en tiedä mitään, olen todennäköisesti väärässä.
Näistä asioistahan en tiedä mitään, olen todennäköisesti väärässä.
Re: CoolBasic? kuollut? eheei ole...
Olio-ohjelmointi selkeytyy erittäin nopeasti, kun sitä pääsee testaamaan käytännössä. Sen jälkeen ilman sitä ei tule enää toimeen.
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: CoolBasic? kuollut? eheei ole...
Ruuttu: Jos kaikki muuttujat olisivat globaaleja / publickejä, niin eikös esim. jotain kirjastoa käyttävän elämä muuttuisi aika kamalaksi? :D Ei tietäisi mitä muuttujanimiä voisi käyttää ja mitä ei. Tai no, voihan kaikki muuttujat kirjoittaa tyyliin munkirjasto_x, munkirjasto_y, mutta sitten kirjastontekijän hermot menisivät.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: CoolBasic? kuollut? eheei ole...
Grandi: Namespacet ovat C++:ssa juuri tästä syystä.
Ja näkyvyysalueet ovat hieman mielenkiintoisia, mutta sanottakoon, että joka funkkarissa on omat muuttujansa ja niiden näkyväksi/näkymättömäksi tekeminen lienee suurimmassa osassa kielistä mahdotonta. ( näkyväksihän ne tulevat globaaliuttaan tai parametreinä välittämällä )
Ja näkyvyysalueet ovat hieman mielenkiintoisia, mutta sanottakoon, että joka funkkarissa on omat muuttujansa ja niiden näkyväksi/näkymättömäksi tekeminen lienee suurimmassa osassa kielistä mahdotonta. ( näkyväksihän ne tulevat globaaliuttaan tai parametreinä välittämällä )
Re: CoolBasic? kuollut? eheei ole...
Esimerkiksi kaikki piirtämiseen liittyvät funktiot todennäköisesti käyttävät funktion sisällä muuttujia "x" ja "y". Mitenkä luulisit käyvän jos nuo muuttujat näkyisivät kyseessä olevan funktion ulkopuolelle? Ja onhan nuo näkyvyysalueet jo nyky cb:ssäkin.Ruuttu wrote:Niin, tuota... Näistä muuttujien "näkyvyysalueista" tai mistä lie... Siis mikä pointti siinä on, että joku muuttuja ei "näy" tai ei ole olemassa jossain tietyssä koodilohkossa, tai että voi erikseen säätää, näkyykö muuttuja esim. funktiossa vai ei? Eikö olisi helpompaa, että jos en halua että tuo muuttuja näkyy tuolla, niin enpäs käytä sitä tuolla..? Okei, jos muuttujat olisivat samat kaikkialla, niin funktion sisällä ei voisi käyttää samannimistä muuttujaa kuin muualla koodissa, sillä hommat saattaisivat mennä sekaisin. Mutta eikö se mene vähän vaikeaksi ja aloittelijaepäystävälliseksi, jos kaikki muuttujat näyttävät nollaa koska koodari on unohtanut tehdä niistä "näkyviä" jne?
Näistä asioistahan en tiedä mitään, olen todennäköisesti väärässä.
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
-
- Tech Developer
- Posts: 650
- Joined: Mon Aug 27, 2007 9:51 pm
- Location: Helsinki, Finland
- Contact:
Re: CoolBasic? kuollut? eheei ole...
Siis kaikki muuttujat ovatkin oletuksellisesti osoittimia. Ei kovin järkevää minusta. Sillä saa aikaan hajottavia virheitä, kun koodia on tarpeeksi monta tuhatta riviä, ja yksi operaattori kirjoitettu jossain väärin. Vähän niinkuin C:ssä kijroittaisit if(lol = true){...}, vaikka kuitenkin tarkoitit if(lol == true){...}. Miksei siis pitää osoittimia erikseen määriteltävinä? Jos CB v3 tukisi funktioihin osoittamista, tuo ominaisuus olisi ihan turha.esa94 wrote:Käsitellä sitä kuin mitä tahansa muuttujaa, ja silti tietää, mitä muuttujassa on. Jos siis esittelet ensin funktion Jee(), voit myöhemmin käskeä Lol=Jee (ei edes tarvitse sulkuja) ja tällöin muuttuja Lol sisältää funktion Jee, ja sitä voi käyttää yksinkertaisesti komentamalla Lol().koodaaja wrote:@esa94: "Jee, osaan printata luokkani muistiosoitteen. ..Ja mitä ihmettä minä tästä hyödyn?"
Lol.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES
CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Tech-kehittäjä
CoolBasic Classic, Cool VES
CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Re: CoolBasic? kuollut? eheei ole...
Itse kannatan samaa systeemiä kuin C++:ssa, eli osoitin muuttujat määritellään erikseen.SPuntte wrote:Siis kaikki muuttujat ovatkin oletuksellisesti osoittimia. Ei kovin järkevää minusta. Sillä saa aikaan hajottavia virheitä, kun koodia on tarpeeksi monta tuhatta riviä, ja yksi operaattori kirjoitettu jossain väärin. Vähän niinkuin C:ssä kijroittaisit if(lol = true){...}, vaikka kuitenkin tarkoitit if(lol == true){...}. Miksei siis pitää osoittimia erikseen määriteltävinä? Jos CB v3 tukisi funktioihin osoittamista, tuo ominaisuus olisi ihan turha.esa94 wrote:Käsitellä sitä kuin mitä tahansa muuttujaa, ja silti tietää, mitä muuttujassa on. Jos siis esittelet ensin funktion Jee(), voit myöhemmin käskeä Lol=Jee (ei edes tarvitse sulkuja) ja tällöin muuttuja Lol sisältää funktion Jee, ja sitä voi käyttää yksinkertaisesti komentamalla Lol().koodaaja wrote:@esa94: "Jee, osaan printata luokkani muistiosoitteen. ..Ja mitä ihmettä minä tästä hyödyn?"
Lol.
Example:
Code: Select all
Dim Pointer As Function(Integer, Integer)
Function Plus(Dim Luku1 As Integer, Dim Luku2 As Integer)
Return Luku1 + Luku2
End Function
Pointer = Plus
Pointer(10, Plus(10, 10))
Re: CoolBasic? kuollut? eheei ole...
Nöh, tarkoitin lähinnä, että funktiota voi käsitellä muutuujan tavion, kun nyt hitto vie kerran funktion nimeä ei voi varata muuttujaksi!SPuntte wrote:Siis kaikki muuttujat ovatkin oletuksellisesti osoittimia. Ei kovin järkevää minusta. Sillä saa aikaan hajottavia virheitä, kun koodia on tarpeeksi monta tuhatta riviä, ja yksi operaattori kirjoitettu jossain väärin. Vähän niinkuin C:ssä kijroittaisit if(lol = true){...}, vaikka kuitenkin tarkoitit if(lol == true){...}. Miksei siis pitää osoittimia erikseen määriteltävinä? Jos CB v3 tukisi funktioihin osoittamista, tuo ominaisuus olisi ihan turha.esa94 wrote:Käsitellä sitä kuin mitä tahansa muuttujaa, ja silti tietää, mitä muuttujassa on. Jos siis esittelet ensin funktion Jee(), voit myöhemmin käskeä Lol=Jee (ei edes tarvitse sulkuja) ja tällöin muuttuja Lol sisältää funktion Jee, ja sitä voi käyttää yksinkertaisesti komentamalla Lol().koodaaja wrote:@esa94: "Jee, osaan printata luokkani muistiosoitteen. ..Ja mitä ihmettä minä tästä hyödyn?"
Lol.
Luassa on muuten semmoinenkin kiva ominaisuus, että taulukoita voi käsitellä monella tapaa: Lua["lol"] == Lua.lol
Re: CoolBasic? kuollut? eheei ole...
Muista se että Lua on skriptikieli ja sitä tulkataan sitämukaa kun edetään. Uusi coolbasic taas ei tule olemaan enää tulkattava.