CoolBasic V3: Esittely

CoolBasiciin yleisesti liittyvä keskustelu.
Locked
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by Jare »

programmer of DSG wrote:Eli Privatella määritetyillä muuttujilla voidaan vain käsitellä funktioiden sisällä, kun taas Publicilla määritettyjä muuttujia voidaan käyttää joka paikassa lähdekoodissa! Eikö näin? :)
Olen ehkä 1 asekeleen lähempänä CB v3 kätevyyttä. ;)
Kyllä, mutta tarvitset instanssin, jonka kautta käyttää Public-muuttujaa.

Nykyisen CB:n syntaksilla se näyttäisi tältä:
(leikitään että Type = Luokka)

Code: Select all


'Määritetään luokka
Type JokuLuokka
    Field Muuttuja '(CBClassic toteuttaa tämän Public-tyylillä)
EndType

'Luodaan instanssi
joku_jäsen.JokuLuokka = New(JokuLuokka)

'Käytetään Muuttujaa
joku_jäsen\Muuttuja = 123
Eli public-muuttuja vastaa nykyisten tyyppien muuttujia.
KankiKalle
Active Member
Posts: 170
Joined: Mon Jun 23, 2008 9:04 pm

Re: CoolBasic? kuollut? eheei ole...

Post by KankiKalle »

Saattaa mennä hieman offiksi, mutta sanonpa tämän kuitenkin:
programmer of DSG, suosittelen lämpimästä tutustumaan ChaosBasic:iin. Hieman tutkailet ja pohdit sitä, niin huomaat kuinka helppoja edellämainitut asiat ovatkaan. Ja CB:stä on melko varmasti tulossa samantyylinen kuin ChB, joten voit ottaa "varaslähdön" ja tutustua siihen minkälainen tuleva CB oikein on.
Väsyttää niin ettei jaksa edes mennä lepäämään.
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by Zero »

KankiKalle wrote:Saattaa mennä hieman offiksi, mutta sanonpa tämän kuitenkin:
programmer of DSG, suosittelen lämpimästä tutustumaan ChaosBasic:iin. Hieman tutkailet ja pohdit sitä, niin huomaat kuinka helppoja edellämainitut asiat ovatkaan. Ja CB:stä on melko varmasti tulossa samantyylinen kuin ChB, joten voit ottaa "varaslähdön" ja tutustua siihen minkälainen tuleva CB oikein on.
Tämän voi ymmärtää tietyllä tavalla väärin. Haluan korostaa, että CoolBasicin kehityksellä ei ole mitään tekemistä ChaosBasicin kanssa! - Minä kuljen suunnittelussa ihan omaa polkuani eikä minua kiinnosta mitä ChaosBasic tukee tai miten siellä asiat hoidetaan. Se, saako Chaos vaikutteita CB:n puolelta on sitten toinen asia - mutta ainakaan toisin päin asia ei ole.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: CoolBasic? kuollut? eheei ole...

Post by vilQuri »

KankiKalle wrote:Saattaa mennä hieman offiksi, mutta sanonpa tämän kuitenkin:
programmer of DSG, suosittelen lämpimästä tutustumaan ChaosBasic:iin. Hieman tutkailet ja pohdit sitä, niin huomaat kuinka helppoja edellämainitut asiat ovatkaan. Ja CB:stä on melko varmasti tulossa samantyylinen kuin ChB, joten voit ottaa "varaslähdön" ja tutustua siihen minkälainen tuleva CB oikein on.
Oikeastaan jos haluaa ottaa varaslähdön olio maailmaan niin kääntyisin suoraan C++:n ja muutaman hyvän oppaan/kirjan puoleen. Tiedä sitten onko tuo ChaosBasic sen huonompi ratkaisu, mutta C++:lla voi tehdä sitten paljon muutakin.
KankiKalle
Active Member
Posts: 170
Joined: Mon Jun 23, 2008 9:04 pm

Re: CoolBasic? kuollut? eheei ole...

Post by KankiKalle »

Tarkoitukseni ei ollut mitenkään verrata tulevaa CoolBasicia ChaosBasiciin, minkä edellisestä viestistä saattaa ymmärtää, mutta luulen että tulevaan CoolBasiciin on tulossa oliot ja luokat ja muut hienoudet, joita ChaosBasicissa nyt on. Tietenkään et voi oppia uutta CB:tä aivan lonkalta vaikka osaisitkin ChB:tä, mutta siis jonkinlaisella yleisellä tavalla varmaankin ymmärtää silloin paremmin näitä uuden CB:n olio-ominaisuuksia? Luulisin ainakin. Mutta senhän näkee tulevaisuudessa :P
Väsyttää niin ettei jaksa edes mennä lepäämään.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic? kuollut? eheei ole...

Post by MaGetzUb »

Zero wrote:
KankiKalle wrote:Saattaa mennä hieman offiksi, mutta sanonpa tämän kuitenkin:
programmer of DSG, suosittelen lämpimästä tutustumaan ChaosBasic:iin. Hieman tutkailet ja pohdit sitä, niin huomaat kuinka helppoja edellämainitut asiat ovatkaan. Ja CB:stä on melko varmasti tulossa samantyylinen kuin ChB, joten voit ottaa "varaslähdön" ja tutustua siihen minkälainen tuleva CB oikein on.
Tämän voi ymmärtää tietyllä tavalla väärin. Haluan korostaa, että CoolBasicin kehityksellä ei ole mitään tekemistä ChaosBasicin kanssa! - Minä kuljen suunnittelussa ihan omaa polkuani eikä minua kiinnosta mitä ChaosBasic tukee tai miten siellä asiat hoidetaan. Se, saako Chaos vaikutteita CB:n puolelta on sitten toinen asia - mutta ainakaan toisin päin asia ei ole.
Enkä ole oikein ChaosBasicista muutenkaan innostunut, kun se ei suostu toimimaankaan. Ja kyllä Zero, minulla on iiiso C++ kirja, ihan omanani, mutten ole vielä sitä tutkinutkaan. :)
Jare wrote:Kyllä, mutta tarvitset instanssin, jonka kautta käyttää Public-muuttujaa.

Nykyisen CB:n syntaksilla se näyttäisi tältä:
(leikitään että Type = Luokka)
Koodi: Valitse kaikki

'Määritetään luokka
Type JokuLuokka
Field Muuttuja '(CBClassic toteuttaa tämän Public-tyylillä)
EndType

'Luodaan instanssi
joku_jäsen.JokuLuokka = New(JokuLuokka)

'Käytetään Muuttujaa
joku_jäsen\Muuttuja = 123


Eli public-muuttuja vastaa nykyisten tyyppien muuttujia.
Ja sanoinko, etten tajua nykyisen CB:n type systeemiä tai tulevaa luokka systeemiä/niiden käyttöä tai instanssi hommia? :shock:
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: CoolBasic? kuollut? eheei ole...

Post by KilledWhale »

Instanssien avulla luokkaan luotaisiin osoitin luokan olioon, jonka jälkeen luokan muuttujia voitaisiin käyttää "globaaleina" instanssin avulla.
En tiedä miten tuo tulisi toimimaan uudessa CoolBasicissa mutta tässä olisi jonkinlainen suuntaa antava esimerkki.

Code: Select all

Class testiLuokka // Luokka nimeltä testiluokka
	public: // Julkinen sisältö
		static Function testiLuokka *Instance() // Funktio jolla haetaan osoitin globaaliin testiluokan olioon
			If Not singleton Then // Jos oliota ei ole luotu luodaan se
				singleton = New testiLuokka
			EndIf
			Return singleton // Palautetaan osoitin
		EndFunction
		Function getInt() // Funktio jolla haetaan numero
			Return intg
		EndFunction
		Function setInt(var As Integer) // Funktio jolla asetetaan numero
			intg = var
		EndFunction
	private:
		static testiLuokka *singleton
		intg As Integer
EndClass

testiLuokka.setInt(123)
testiLuokka::Instance()->setInt(555)

Print testiLuokka.getInt() // Tulostaa 123
Print testiLuokka::Instance()->getInt() // Tulostaa 555

test()

WaitKey

Function test()
	Print testiLuokka.getInt() // Tulostaa 0
	Print testiLuokka::Instance()->getInt() // Tulostaa 555
EndFunction
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by Dibalo »

En näe mitään hyötyä tuollaisista Singleton-luokista, mikäli (kun) CoolBasic tulee tukemaan staattisia luokkia. Ne ajavat mielestäni täysin saman asian ilman tuollaisia ihme "virityksiä". Seuraavan esimerkin syntaksi on pelkkä arvaus:

Code: Select all

Public Static Class Testi
   Public Static Function Kirjoita(Dim t As String)
      Print( t )
   EndFunction
   Public Static Dim muuttuja As Float
EndClass

Testi.Kirjoita( "Moi maailma!" )
Testi.muuttuja = 36.867
The darkest spells can be found from
http://tunkkaus.blogspot.fi
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by Zero »

Dibalon arvaus osui aika lähelle.

Module on sama kuin staattinen luokka. Kaikki moduulin jäsenfunktiot ovat automaattisesti staattisia ("Shared"). Eli niitä voidaan kutsua suoraan luokkatasolta ilman olion tekemistä.

Code: Select all

Module Testi
   Public Function Kirjoita(t As String)
      // Tee jotain...
   EndFunction
   Public muuttuja As Float
EndModule

// Nämä ovat jossain toisessa funktiossa:
Testi.Kirjoita("Moi maailma!")
Testi.muuttuja = 36.867
Jos nyt ajatellaan esimerkiksi CoolBasicin pääohjelmaa, huomataan että Main()-funktio on siis "Shared", joten se voidaan kutsua suoraaltaan. Lisäksi moduuleista ei voi muutenkaan tehdä olioita.

Code: Select all

Module MunPeli
    Function Main()
        // Tästä alkaa pelin suoritus kun ohjelma käynnistyy...
    EndFunction
EndModule
Moduuliin "MunPeli" voidaan lisäksi nyt määritellä joukko Public muuttujia, jotka toimivat ikään kuin "globaaleina". Kannattaa kuitenkin harkita usempaan kertaan kannattaako nuo tiedot sitoa johonkin luokkaan sen sijaan. Esimerkiksi pelivalikkojen grafiikkamuuttujat kuuluvat ennemminkin valikko-olioon kuin tähän globaaliin tilaan. Yleinen pyrkimys oliopohjaisessa pelinteossa (ja olio-ohjelmoinnissä yleensä) on, että globaaleita muuttujia ei tarvita.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
kaneli2000
Guru
Posts: 1059
Joined: Mon Mar 17, 2008 2:40 pm
Location: Lempäälä

Re: CoolBasic? kuollut? eheei ole...

Post by kaneli2000 »

Tulikin muuten mieleen, että kai CB V3:een tulee selkeä manuaali, kuten nykyisessä beta kympissä? En nyt joko a) muista tai b) tiedä.
I see the rainbow rising
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by Viltzu »

kaneli2000 wrote:Tulikin muuten mieleen, että kai CB V3:een tulee selkeä manuaali, kuten nykyisessä beta kympissä? En nyt joko a) muista tai b) tiedä.
Ekasta viestistä pätkä wrote:mutta uusi manuaali ja uudet esimerkit selittävät ne kyllä kunnolla ja kattavasti.
Ja on siitä taidettu puhua tässä topikissa jo. Mutta kyllä siihen siis on tulossa mitä olen ymmärtänyt itse.
User avatar
buke44
Active Member
Posts: 169
Joined: Sat May 23, 2009 8:10 pm
Location: Tampere

Re: CoolBasic? kuollut? eheei ole...

Post by buke44 »

Kun tuossa uudessa on 3D objektit mahdollisia, niin tuleeko mukana ohjelma jolla voi tehdä niitä? Ja jos ei tule, niin minkälaisia 3D objekteja se tukee?
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: CoolBasic? kuollut? eheei ole...

Post by KilledWhale »

buke44 wrote:Kun tuossa uudessa on 3D objektit mahdollisia, niin tuleeko mukana ohjelma jolla voi tehdä niitä? Ja jos ei tule, niin minkälaisia 3D objekteja se tukee?
Zero wrote:Ohjelmoija voi alustaa grafiikkamoottorin joko DX8, DX9, OpenGL tai SoftaRenderille. Grafiikkamoottorista vastaa näillä näkymin Irrlicht (http://irrlicht.sourceforge.net/).

Tuetut 3D-formaatit (suoraan Irrlichtin kotisivuilta):
Irrlicht scenes (.irr, r/w), Irrlicht static meshes (.irrmesh, r/w), 3D Studio meshes (.3ds, r), B3D files (.b3d, r), Alias Wavefront Maya (.obj, r/w), Lightwave Objects (.lwo, r), COLLADA 1.4 (.xml, .dae, r/w), Microsoft DirectX (.x, r) (binary & text), Milkshape (.ms3d, r), OGRE meshes (.mesh, r), My3DTools 3 (.my3D, r), Pulsar LMTools (.lmts, r), Quake 3 levels (.bsp, r), Quake 2 models (.md2, r), Quake 3 models (.md3, r), DeleD (.dmf, r), FSRad oct (.oct, r), Cartography shop 4 (.csm, r), STL 3D files (.stl, r/w)

Tuetut 2D-formaatit (suoraan Irrlichtin kotisivuilta):
JPEG File Interchange Format (.jpg, r/w), Portable Network Graphics (.png, r/w), Truevision Targa (.tga, r/w), Windows Bitmap (.bmp, r/w), Adobe Photoshop (.psd, r), Zsoft Paintbrush (.pcx, r/w), Portable Pixmaps (.ppm, r/w), Quake 2 textures (.wal, r)

Tuetut animointityypit (3D):
Perus mesh-morfaus (esim. Quake-mallit toimivat näin) sekä luurankoon perustuva "skinnaus" (esim. X-formaatin tukema).
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
User avatar
buke44
Active Member
Posts: 169
Joined: Sat May 23, 2009 8:10 pm
Location: Tampere

Re: CoolBasic? kuollut? eheei ole...

Post by buke44 »

öö... Siis tuo 3D ohjelmointi olisi aika monimutkaista ja aloittelijalle epäsuositeltavaa?
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: CoolBasic? kuollut? eheei ole...

Post by Awaclus »

buke44 wrote:öö... Siis tuo 3D ohjelmointi olisi aika monimutkaista ja aloittelijalle epäsuositeltavaa?
Ei kai kukaan niin ole sanonut.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: CoolBasic? kuollut? eheei ole...

Post by Koodiapina »

Riippuu missä menee aloittelijan raja. Mutta kyllähän se melko vaativaa on, ellei ole aikaisempaa kokemusta.
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: CoolBasic? kuollut? eheei ole...

Post by JATothrim »

Päähäni pälkähti varsin erikoinen idea, liittyen kääntäjän ja editorin yhteistyöhön:
(Kuvitteellisia editorin valikoita: )
File -> New -> Fast Source
(kirjoitetaan koodia editoriin, Fast Sourceen. Tämä on ns. virtuaali tiedosto jota ei ikinä tallenneta levylle.)
Build -> Current Source & Run (esim. ctrl + F9)

Tässä on itse idean ydin: kun kääntäjä kääntää "Nopean Koodin" tuotettu ohjelmakin on "Nopea" eikä sitä siis tallenneta levylle vaan käännös jätetään RAM muistiin. Editori sitten vain "käynnistää" tämän koodin suoraan muistista! Ja Zam! Ohjelma on käynnissä, kenties, alle sekunnin! Myöhemmin Koodin voi tietysti tallentaa tavallisesti levylle. Toteutustakin kerkesin jo hieman miettimään.. vaikeinta näyttäisi olevan juuri tuon ohjelman käynnistäminen suoraan muistista..
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
User avatar
kaneli2000
Guru
Posts: 1059
Joined: Mon Mar 17, 2008 2:40 pm
Location: Lempäälä

Re: CoolBasic? kuollut? eheei ole...

Post by kaneli2000 »

JATothrim wrote:Päähäni pälkähti varsin erikoinen idea, liittyen kääntäjän ja editorin yhteistyöhön:
(Kuvitteellisia editorin valikoita: )
File -> New -> Fast Source
(kirjoitetaan koodia editoriin, Fast Sourceen. Tämä on ns. virtuaali tiedosto jota ei ikinä tallenneta levylle.)
Build -> Current Source & Run (esim. ctrl + F9)

Tässä on itse idean ydin: kun kääntäjä kääntää "Nopean Koodin" tuotettu ohjelmakin on "Nopea" eikä sitä siis tallenneta levylle vaan käännös jätetään RAM muistiin. Editori sitten vain "käynnistää" tämän koodin suoraan muistista! Ja Zam! Ohjelma on käynnissä, kenties, alle sekunnin! Myöhemmin Koodin voi tietysti tallentaa tavallisesti levylle. Toteutustakin kerkesin jo hieman miettimään.. vaikeinta näyttäisi olevan juuri tuon ohjelman käynnistäminen suoraan muistista..
Öh, mitä oikeaa hyötyä tästä sitten olisi peruskäyttäjille :D?
I see the rainbow rising
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: CoolBasic? kuollut? eheei ole...

Post by phons »

kaneli2000 wrote:
JATothrim wrote:Päähäni pälkähti varsin erikoinen idea, liittyen kääntäjän ja editorin yhteistyöhön:
(Kuvitteellisia editorin valikoita: )
File -> New -> Fast Source
(kirjoitetaan koodia editoriin, Fast Sourceen. Tämä on ns. virtuaali tiedosto jota ei ikinä tallenneta levylle.)
Build -> Current Source & Run (esim. ctrl + F9)

Tässä on itse idean ydin: kun kääntäjä kääntää "Nopean Koodin" tuotettu ohjelmakin on "Nopea" eikä sitä siis tallenneta levylle vaan käännös jätetään RAM muistiin. Editori sitten vain "käynnistää" tämän koodin suoraan muistista! Ja Zam! Ohjelma on käynnissä, kenties, alle sekunnin! Myöhemmin Koodin voi tietysti tallentaa tavallisesti levylle. Toteutustakin kerkesin jo hieman miettimään.. vaikeinta näyttäisi olevan juuri tuon ohjelman käynnistäminen suoraan muistista..
Öh, mitä oikeaa hyötyä tästä sitten olisi peruskäyttäjille :D?
Noh, esim. kun koodaan C++:ssaa CodeBlocks:lla joudun aina tekemään uuden projektin koodatakseni. Nykyisellä CB:llä ei, mutta tulevalla kai täytyykin, tästä on hyötyä juuri silloin kun joku kaveri postaa ongelmansa tänne ja yrität lähettää koodinpätkää tänne avuksi, ilman tätä joutuisit tekemään uuden projektin, TÄYSIN TURHAAN, vaikka voisit nopeasti kokeilla toimiiko homma oikein ja sitten avustaa kaveriasi...

Edit: Ja säästyy tilaa ihan pirusti, jos tekisin uudella CB:llä projekteja samaan tahtiin kuin nykyisellä, niin koneeni olisi nopeasti piukassa...
Image
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: CoolBasic? kuollut? eheei ole...

Post by JATothrim »

Jeps. Ja koska kirjoitettu koodi ja käännös ovat aina muistissa, testaaminen on _paljon_ nopeampaa, kuin että sitä 100 rivin räpöstysta ruvetaan tallentamaan levylle (joka sattuu olemaan wanha usb tikku) ja suorittamaan sieltä. Yksittäisiä koodeja täytyy ehdottomasti voida kääntää ja suorittaa kuten nykyisessä CB:ssä. Projektin luomisesta/hallinasta on vain haittaa pienellä koodimäärällä. Esim. halutaan testata yksittäistä funktiota perusteellisesti, ja kun funktio saadaan toimimaan oikein, ta'da! copy-pase oikeaan projektiin! Funktion "kehittely koodista" ei jää mitään jälelle, vain puhdas, toimiva versio projektiin lisättynä.
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
Locked