ChaosBasic - KEHITTÄJIÄ HAKUSESSA!! (sivu 9)

Muu yhteisön välinen keskustelu.
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Dibalo »

Todennäköisesti (siis suunnittelua vasta) kääntäjän asetuksista voidaan muuttaa käyttöjärjestelmä, jolle runtime käännetään. Mutta kyllä, peli tulee kääntää jokaiselle käyttöjärjestelmälle erikseen.

ChB-koodaajan ei tarvitse miettiä erikseen, mitä RenderSystemiä hän haluaa käyttää. ChaosBasic käyttää automaattisesti käyttöjärjestelmälle tehtyä oletus-RenderSystem:iä. Mikäli käyttäjä kuitenkin haluaa käyttää omaa RenderSystem-luokkaa (toteutettu esimerkiksi OGRE:lla), tulee hänen ilmoittaa siitä koodissa. Kyseinen asia hoitunee yksinkertaisesti seuraavalla tavalla:

Code: Select all

Screen.RenderSystem "MyOGRERenderSystem.dll" //windows
Screen.RenderSystem "MyOGRERenderSystem.so"
Eli jokainen RenderSystem on oma dll:nsä, jonka metodeita itse runtime kutsuu. Puhutaan ns. "dynamic loading" -tavassa, jossa kirjasto ladataan ajonaikaisesti ja sen metodeita voidaan kutsua. Tämä asettaa luotaville dll:lle hyvin tarkat säännöt, jotta ohjelmat toimivat kunnolla. Rehellisyyden nimissä en uskalla kuitenkaan vielä luvata tämän systeemin toimivan Linuxissa, sillä en ole perehtynyt siihen tarpeeksi. Windows-tietoni ovat kuitenkin sen verran vahvat, että voin sanoa tämän onnistuvan Windowsilla. 3D-tuki on siis mahdollista tällä tavalla.
The darkest spells can be found from
http://tunkkaus.blogspot.fi
cryde
Newcomer
Posts: 8
Joined: Mon Apr 07, 2008 12:11 pm

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by cryde »

Tässä on yksinkertainen koodi 2 kuvan neliotörmäyksen tunnistukseen. Siitä voi joku tehä vaikka funktion..

Code: Select all

	
        guyleft = posx - (guy.GetRealWidth()/2)
	guyright = posx + (guy.GetRealWidth()/2)
	guyup = posy - (guy.GetRealHeight()/2)
	guydown = posy + (guy.GetRealHeight()/2)
	guy2left = posx2 - (guy2.GetRealWidth()/2)
	guy2right = posx2 + (guy2.GetRealWidth()/2)
	guy2up = posy2 - (guy2.GetRealHeight()/2)
	guy2down = posy2 + (guy2.GetRealHeight()/2)
	
	If guyleft < guy2right And guy2left < guyright And guyup < guy2down And guy2up < guydown Then
		collision = 1
	Else
		collision =0
	EndIf
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Jare »

Dibalo, laitahan joku sivu tuonne chaosbasic.com:iin, niin voisi sieltä lueskella kielen kehityksestä yms. Vaikket mitään megasivustoa saisikaan heti pystyyn, niin sellainen pieni yhden sivun kooste kehitysuutisista ja ladattavista tiedostoista olisi erittäin mukava. Plus ehkä joku vieraskirjatyyppinen palautejärjestelmä, ettei tarvitse kaikkea palautetta tähän topikkiin pistää.

Tämä on sen verran vakuuttava projekti, että ansaitsee jo ihan oman sivunsa.
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Dibalo »

itselläni ei ole valitettavasti aikaa/taitoa sivujen tekoon toistaiseksi. Jos jonkun saisi tekemään sivut niin se olisi hieno juttu! Lähden tänään isoon taisteluharjoitukseen joten minusta ei kuulu muutamaan päivään mitään..
The darkest spells can be found from
http://tunkkaus.blogspot.fi
zHelmet
Member
Posts: 73
Joined: Mon Nov 10, 2008 3:55 pm

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by zHelmet »

Voisiko joku minua viisaampi tehdä chblle sopivan dll kirjaston jossa olisi funktioita kaksi toinen muuntaa annetun kirjaimen ascii arvoksi ja toinen tekisi tämän päin vastoin itse en onnistunut mitenkään..... :oops:
EDIT: mielellään lähdekoodin kanssa (c++)
Last edited by zHelmet on Sun Dec 14, 2008 7:52 pm, edited 1 time in total.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Jani »

Dibalo wrote:itselläni ei ole valitettavasti aikaa/taitoa sivujen tekoon toistaiseksi. Jos jonkun saisi tekemään sivut niin se olisi hieno juttu! Lähden tänään isoon taisteluharjoitukseen joten minusta ei kuulu muutamaan päivään mitään..
Hei! minähän voisin tehdä sivut. osaan ehkä superalkeellinen-ok. Riippuu ajasta.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by TheDuck »

Jani wrote:
Dibalo wrote:itselläni ei ole valitettavasti aikaa/taitoa sivujen tekoon toistaiseksi. Jos jonkun saisi tekemään sivut niin se olisi hieno juttu! Lähden tänään isoon taisteluharjoitukseen joten minusta ei kuulu muutamaan päivään mitään..
Hei! minähän voisin tehdä sivut. osaan ehkä superalkeellinen-ok. Riippuu ajasta.
Jos osaat tehdä vain superalkeelliset, niin turha sitä on täällä hehkuttaa.. Itselläni sujuu html mainiosti ja on myös gimp käytössä grafiikan tekoa varten. Pari ulkoasuakin tullu tehtyä...

P!NK
BlueDream
EDIT:

Notepad++ o/

Last edited by TheDuck on Sun Dec 14, 2008 9:02 pm, edited 1 time in total.
^^
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by MAVmaggot »

Minultakin onnistuu sivujen tekeminen. Teen niitä Adoben DreamWeaver-editorilla ja Photoshopilla kuvia+logoja. Mallikappaleena keskeneräiset sivut rpg-pelilleni jota ei ole vielä edes aloitettu : P
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by temu92 »

User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Dibalo »

HYVÄÄ JOULUA KAIKILLE!
StormBringer kolkuttelee jo ovella...

Taas juhlapäivien kunniaksi aion pitää ChaosBasic:n virallisen vuosittaisen lakisääteisen hypetyspuheen. Salamat iskevät jo maahan horisontissa luoden jälleen kerran myrskyn ääniä vaeltavien kooderien korviin. Tällä kertaa kyse ei ole pelkästään pikku puhuristaan vaan myrskyjen myrskystä, jonka tarkoitus on katkaista selkäranka myrskyn keskellä ponnistelevasta CoolBasic-linnakkeen puolustuksesta. Uusi Kaaos jyrää salamoiden säkenöidessä ja ukkosen iskiessä maahan kaiken sen, mikä tuntui kerran hienolta ja uudelta! Uusi ASM-pohjainen tulkki on jopa 4x nopeampi logiikan (käytännössä jää noin 2-3x tasolle) suorittamisessa kuin aikasemmat viritykset. Lisäksi toimintavarmuutta on saatu hilattua rutkasti korkeammalle. Näissä parannukset häviävät vain laajennettavuudelle, joka on uudessa Kaaoksessa parempi kuin te kuolevaiset osasitte koskaan edes uneksia. :mrgreen:

Uusi ChaosBasic on tuleva mullistamaan CB-yhteisön. Syntaksi on muuttunut hieman kohti .NET-kieliä, mutta pitää silti kiinni vahvasti selkeästä ja helposta BASIC-syntaksista. Taulukot on vain muutettu olioiksi, joten niiden käsittely ja välittäminen eri osille koodia on naurettavan helppoa ja nopeaa. Taulukoilla ei ole rajaa ulottuvuuksille, toisin kuin aikaisemmin. Oliot ovat saaneet tulta alleen muodostinfunktioiden muodossa. Operaattorien ylikuormituskin on todo-listalla jossain vaiheessa. Uusi ja vallankumouksellinen funktiosysteemi kääntäjässä luo minulle kehittäjänä fantastiset mahdollisuudet laajentaa Kaaosta eri moduuleilla (nettituki, 3D-tuki, ihan mikä tahansa tuki...) ja DLL-kirjastoilla. Olen saamassa aikaan piakkioin läpimurron, joka mahdollistaa C++-luokkien käyttämisen Kaaoksessa. Niinpä kunnollisen 3D-rajapinnan tekemiseen vaadituista luokista voidaan tehdä C++:n avulla nopeita. 8-)

Lisäksi ilouutinen kaikille: olen harkinnut itse kielen pitämistä ilmaisena Zeron jalanjälkiä seuraten. Sen sijaan 3D-rajapinnalle tulisi hintaa noin parikymppiä. Mutta eipä katkaista vielä varsalta selkää... 3D-koodia ei ole kirjoitettu riviäkään... :P

Seuraavassa esimerkki nykyisestä syntaksista:

Code: Select all

Function BubbleSort(Var taulu[] As Integer, Var sz) As Void
	For i = (sz-1) To 1 Step -1
		For o = 0 To i-1
			If taulu[o] > taulu[o+1] Then
				Var temp = taulu[o]
				taulu[o] = taulu[o+1]
				taulu[o+1] = temp
			EndIf
		Next
	Next
EndFunction


Var size = 10000
Var t[] As Integer = New Integer[size]
For i = 0 To size-1
	t[i] = Random(0, 100000)
Next
BubbleSort t, size

// dll-funktiot
Import "User32.dll" "MessageBoxA" __stdcall MessuBoxi(Var hwnd As Pointer, Var text As String, Var capt As String, Var type As Integer) As Integer
The darkest spells can be found from
http://tunkkaus.blogspot.fi
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Dande »

:D Myrskyn tuojaa odotellessa haluaisin esittää muutamia kysymyksiä:
  • Onko nykyinen koodi pahasti Windows-sidonnaista vai tulevatko Linux- ja Mac-käyttäjät saamaan oman versionsa tulevaisuudessa (itselleni ei sillä Macillä ole kyllä väliä, mutta Linux-tuki olisi mukava)?
  • Tuleeko grafiikkakirjasto ja muut kirjastot kuten äänikirjasto aina käännettyyn exe:en mukaan vai onko mahdollisuutta myös tehdä komentorivisovelluksia tai dll/so-kirjastoja jotka eivät turhaan sisällä näitä kirjastoja?
  • Kuinka laaja standardikirjasto tulee olemaan ja mitä osa-alueita se tulee sisältämään?
  • Onko mahdollista ohjelmoida itse kieleen laajennuspalikoita niin, että ne linkitettäisiin exe:een staattisesti?
  • Onko dokumentaatio hyvällä mallilla? (itselleni riittäisi lähinnä lista mahd. funktioiden ja luokkien nimistä ja luokkien metodeista ja parametrien selkokieliset nimet, mutta CoolBasicin vahvuus oli aikanaan kattava suomenkielinen dokumentaatio esimerkkeineen)
  • Minkälaisia moduuleita myrskyn tuoja tulee sisältämään ilmestyessään, vai onko vasta moduulien käyttö valmiina, mutta moduulit ei?
  • Voimmeko odottaa Myrskyn tuojaa vielä tämän vuoden puolella, jos se kerta kolkuttelee jo ovella? ;)
  • EDIT: Tuleeko uuteen versioon objektijärjestelmä, vai jätetäänkö se käyttäjien itsensä tekemäksi? (Jos jätetään, niin tietäisi alkaa jo hieman suunnitella, ettei siitä tulisi yhtä nopeasti kyhättyä kuin ensimmäisestäni)
  • EDIT2: Tuleeko uuteen versioon tuki luokkien sisäisille luokille ja Const-jäsenmuuttujille? Tai vaihtoehtoisesti tuleeko C++:n tapaista namespace avainsanaa?
Sami345
Advanced Member
Posts: 349
Joined: Fri Aug 31, 2007 4:52 pm
Contact:

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Sami345 »

Näytti vähän hölmöltä toi size muuttujan välitys funktiolle, joten onko tulevaisuudessa mahdollista saada eri ulottovuuksien koot taulukosta?
Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Dibalo »

Galgoneer wrote:
  • Onko nykyinen koodi pahasti Windows-sidonnaista vai tulevatko Linux- ja Mac-käyttäjät saamaan oman versionsa tulevaisuudessa (itselleni ei sillä Macillä ole kyllä väliä, mutta Linux-tuki olisi mukava)?
  • Tuleeko grafiikkakirjasto ja muut kirjastot kuten äänikirjasto aina käännettyyn exe:en mukaan vai onko mahdollisuutta myös tehdä komentorivisovelluksia tai dll/so-kirjastoja jotka eivät turhaan sisällä näitä kirjastoja?
  • Kuinka laaja standardikirjasto tulee olemaan ja mitä osa-alueita se tulee sisältämään?
  • Onko mahdollista ohjelmoida itse kieleen laajennuspalikoita niin, että ne linkitettäisiin exe:een staattisesti?
  • Onko dokumentaatio hyvällä mallilla? (itselleni riittäisi lähinnä lista mahd. funktioiden ja luokkien nimistä ja luokkien metodeista ja parametrien selkokieliset nimet, mutta CoolBasicin vahvuus oli aikanaan kattava suomenkielinen dokumentaatio esimerkkeineen)
  • Minkälaisia moduuleita myrskyn tuoja tulee sisältämään ilmestyessään, vai onko vasta moduulien käyttö valmiina, mutta moduulit ei?
  • Voimmeko odottaa Myrskyn tuojaa vielä tämän vuoden puolella, jos se kerta kolkuttelee jo ovella? ;)
  • EDIT: Tuleeko uuteen versioon objektijärjestelmä, vai jätetäänkö se käyttäjien itsensä tekemäksi? (Jos jätetään, niin tietäisi alkaa jo hieman suunnitella, ettei siitä tulisi yhtä nopeasti kyhättyä kuin ensimmäisestäni)
  • EDIT2: Tuleeko uuteen versioon tuki luokkien sisäisille luokille ja Const-jäsenmuuttujille? Tai vaihtoehtoisesti tuleeko C++:n tapaista namespace avainsanaa?
  • Nykyinen koodi on kääntäjän osalta täysin käyttöjärjestelmäriippumatonta, tulkin puolelta voidaan puhua vain muutamista kymmenistä riveistä, jotka on jo ennakoitu ja toteutettu niin, että linux-implementaatio on mahdollista.
  • Dll/so -kirjastojen teko ei ole mahdollista, koska ohjelma suoritetaan tulkin läpi. Grafiikka-, ääni- ynnä muut moduulit voidaan kuitenkin jättää pois ja tehdä komentoriviohjelmia pelkällä runtimella. Varjopuolena on valitettavasti, että kääntäjän asetuksia joutuu asettelemaan hieman normaalia enemmän. Vakioasetuksina on, että perusmoduulit (äänet ja grafiikka) tulevat mukaan. Komentorivisovellukseen joudutaan jättämään grafiikkamoduuli pois.
  • Std-kirjasto tulee olemaan yhtä laaja kuin mitä käyttäjät sitä jaksavat laajentaa. ;)
  • Staattinen linkitys ei ole mahdollista. Omia C++ -luokkia voi kuitenkin tuoda Kaaokseen dynaamisesti (vaatii aika paljon säätöä, mutta onnistuu).
  • MyrskynTuoja sisältää ilmestyessään vain perusmoduulit. Tuki käyttäjän omille kuitenkin löytyy.
  • Ensi vuonna sitten.. ;)
  • Objektijärjestelmä lisätään stantardikirjastoon.
  • Luokkien sisäiset luokat ja namespace eivät ole tuettuna. Ei myöskään jäsenmuuttujat Const-versioina.
Näytti vähän hölmöltä toi size muuttujan välitys funktiolle, joten onko tulevaisuudessa mahdollista saada eri ulottovuuksien koot taulukosta?
Kun lisään tyyppikonversiot, saadaan taulukoiden koot seuraavalla tavalla:

Code: Select all

Var sz = (arr As Array).DimensionSize(0) // 0 = ensimmäinen ulottuvuus
The darkest spells can be found from
http://tunkkaus.blogspot.fi
User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by vilQuri »

Jos kerta 3D-rajapinnalle tulee 20€ hintaa, niin voihan siihen toki kirjoittaa oman 3D-lisän ja jaella sitä ilmaiseksi?? Ja eikö kannattaisi tehdä joku blogi tai jotain, missä voisit tiedottaa ChaosBasisin menestyksestä? Vaikka Worpressiin.
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Dande »

Innostuin tässä kehittelemään uudestaan tuota vanhaa objektijärjestelmääni, ja satuin tarvitsemaan siihen GetAngle-funktiota, joten väsäsin tälläisen:

Code: Select all

Function GetAngle(Var x1 As Float,Var y1 As Float,Var x2 As Float, Var y2 As Float) As Float
	Var x As Float=x2-x1
	Var y As Float=y2-y1
	If x>0 Then
		Return ATan(y/x)
	ElseIf x<0 Then
		If y<0 Then
			Return 180 + ATan(y/x)
		ElseIf y>0 Then
			Return  ATan(y/x) -180
		Else
			Return 180
		EndIf
	ElseIf x==0 Then
		If y<0 Then
			Return 270
		Else
			Return 90
		EndIf
	EndIf
EndFunction 
Tiedän, että edellisellä sivulla oli jo yksi, mutta siinä oletetaan, että y-akseli kasvaa alaspäin, eli se on siis suunniteltu ruutukoordinaattien mukaan. Sen lisäksi, että omani olettaa että y-akseli kasvaa ylöspäin, tarjoaa se myös nopeutta lisää n.30%. Jos joku haluaa nopeustestiohjelmani, niin se on tässä (alussa on konfigurointi parametrit):

Code: Select all

Const Var KIERROKSET=5 //Montako kertaa testiä ajetaan
Const Var KUTSUJEN_MAARA=10^6 //montako kertaa funktiota kutsutaan testin aikana
Const Var TESTITAPAUSTEN_MAARA=10000 //montako erilaista tapausta arvotaan testattavaksi


Function GetAngleNew(Var x1 As Float,Var y1 As Float,Var x2 As Float, Var y2 As Float) As Float
	Var x As Float=x2-x1
	Var y As Float=y2-y1
	If x>0 Then
		Return ATan(y/x)
	ElseIf x<0 Then
		If y<0 Then
			Return 180 + ATan(y/x)
		ElseIf y>0 Then
			Return  ATan(y/x) -180
		Else
			Return 180
		EndIf
	ElseIf x==0 Then
		If y<0 Then
			Return 270
		Else
			Return 90
		EndIf
	EndIf
EndFunction 

Function GetAngle(Var x1 As Float,Var y1 As Float,Var x2 As Float, Var y2 As Float) As Float
   If x1 < x2 And y1 < y2 Then
      Return 360 - ATan( Distance(0,y1,0,y2) / Distance(x1,0,x2,0) )
   ElseIf x1 > x2 And y1 < y2 Then
      Return 180 + ATan( Distance(0,y1,0,y2) / Distance(x1,0,x2,0) )
   ElseIf x1 > x2 And y1 > y2 Then
      Return 180 - ATan( Distance(0,y1,0,y2) / Distance(x1,0,x2,0) )
   ElseIf x1 < x2 And y1 > y2 Then
      Return ATan( Distance(0,y1,0,y2) / Distance(x1,0,x2,0) )
   ElseIf x1 == x2 And y1 > y2 Then
      Return 90
   ElseIf x1 == x2 And y1 < y2 Then
      Return 270
   ElseIf x1 > x2 And y1 == y2 Then
      Return 180
   EndIf
EndFunction 


Var arvot[2,TESTITAPAUSTEN_MAARA] As Float
Var ajat[2,KIERROKSET] As Float

Var j=0
For kierros=0 To KIERROKSET-1
	For i=0 To TESTITAPAUSTEN_MAARA-1
		arvot[0,i]=Randomf(0,1)
		arvot[1,i]=Randomf(0,1)
	Next
	j=0
	Var alku=Timer()
	For i=0 To KUTSUJEN_MAARA-1
		j+=1
		If j>(TESTITAPAUSTEN_MAARA-1) Then
			j=0
		EndIf
		GetAngle(0,0,arvot[0,j],arvot[1,j])
	Next
	ajat[0,kierros]=Timer()-alku
	j=0
	alku=Timer()
	For i=0 To KUTSUJEN_MAARA-1
		j+=1
		If j>(TESTITAPAUSTEN_MAARA-1) Then
			j=0
		EndIf
		GetAngleNew(0,0,arvot[0,j],arvot[1,j])
	Next
	ajat[1,kierros]=Timer()-alku
Next

Var ajat1=0
Var ajat2=0
For i=0 To KIERROKSET-1
	ajat1+=ajat[0,i]
	ajat2+=ajat[1,i]
Next 
Var avgAika1 As Float=ajat1/KIERROKSET
Var avgAika2 As Float=ajat2/KIERROKSET

Var f As Font = New Font 
f.Load "Arial", 26 
Screen.Font f 

Screen.Text 10,10,avgAika1
Screen.Text 10,30,avgAika2
Screen.Text 10,50,((avgAika1-avgAika2)/avgAika1*100)+"% nopeampi"
Screen.Draw
Screen.Wait 5000
Omanikin saa toki säädettyä toimimaan ruutukoordinaattien mukaan samalla tavalla kuin tuon toisenkin saa toimimaan "maailmakoordinaattien" mukaan, eli vaihtamalla y:tä koskevat ehdot päinvastaisiksi.

Aiheutti muuten päänvaivaa tuo ATan-funktio, kun se ei palauttanutkaan negatiivisia arvoja, vaan kiltisti suoraan astelukeman. Ihmettelin ensiksi, että miksi 360 + (-45) =675, mutta se johtuikin siitä että ATan palauttikin 315, eikä -45 :)

EDIT: Ja lisätään tähän vielä hyvin alkeellinen Vector2d-luokka, joka käyttää tuota GetAnglea, jos jotakuta kiinnostaa:

Code: Select all

Class Vector2d
	Private Var mPos[2] As Float
	
	Public Function X() As Float
		Return mPos[0]
	EndFunction
	
	Public Function X(Var x As Float) As Void
		mPos[0]=x
	EndFunction
	
	Public Function Y() As Float
		Return mPos[1]
	EndFunction
	
	Public Function Y(Var y As Float) As Void
		mPos[1]=y
	EndFunction
	
	Public Function Magnitude() As Float
		Return Sqrt(mPos[0]*mPos[0]+mPos[1]*mPos[1])
	EndFunction
	
	Public Function Magnitude(Var mag As Float) As Void
		Var ang As Float=Angle()
		mPos[0]=Cos(ang)*mag
		mPos[1]=Sin(ang)*mag
	EndFunction
	
	Public Function Angle() As Float
		Return GetAngle(0,0,mPos[0],mPos[1])
	EndFunction
	
	Public Function Angle(Var ang As Float) As Void
		Var mag As Float=Magnitude()
		mPos[0]=Cos(ang)*mag
		mPos[1]=Sin(ang)*mag
	EndFunction

	Public Function Add(Var vec As Vector2d) As Void
		mPos[0]+=vec.X()
		mPos[1]+=vec.Y()
	EndFunction
	
	Public Function Subtract(Var vec As Vector2d) As Void
		mPos[0]=mPos[0]-vec.X()
		mPos[1]=mPos[1]-vec.Y()
	EndFunction
	
	Public Function Multiply(Var mul As Float) As Void
		mPos[0]=mPos[0]*mul
		mPos[1]=mPos[1]*mul
	EndFunction
	
	Public Function Copy() As Vector2d
		Var tmp As Vector2d = New Vector2d
		tmp.Set(X(),Y())
		Return tmp
	EndFunction
EndClass
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Dibalo »

Std-kirjastoon tuleva objektijärjestelmä toteutetaan C++:lla jotta siitä saadaan yhtä nopea kuin sisäänrakennetuista komponenteistakin. 8-)
The darkest spells can be found from
http://tunkkaus.blogspot.fi
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Dibalo »

Hyvää UuttaVuotta 2009 kaikille!

Hieman tiedostusta nykyisestä tilasta: Sain renderöintikomponentit DX9:llä valmiiksi ja dynaaminen linkitys toimii juuri kuin sen oletinkin (eli aivan erinomaisesti). Pitäisi vielä luoda rajapinta itse Kaaokseen, jotta käyttäjä pääsisi käsiksi komponentteihin. Lisäksi olen julkistamassa dokumentaatiosoftaa, jotta innokkaat auttajat voisivat mahdollisesti auttaa dokumentaation kanssa. Tästä lisää lähipäivinä. :mrgreen:
The darkest spells can be found from
http://tunkkaus.blogspot.fi
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: ChaosBasic 0.1.0.1 (Sledgehammer)

Post by Dibalo »

Uudet kotisivut ja foorumi avattu!

Haa! Sain viimeinkin järkättyä ChaosBasic:lle omat kotisivut.
www.chaosbasic.com
Sivut ovat vielä työn alla.

Foorumi on kuitenkin pystyssä ja sinne pääsette osoitteesta:
http://www.chaosbasic.com/phpBB3/index.php

Kaikki tervetuloa mukaan!
The darkest spells can be found from
http://tunkkaus.blogspot.fi
KankiKalle
Active Member
Posts: 170
Joined: Mon Jun 23, 2008 9:04 pm

Re: ChaosBasic - FOORUMIT AVATTU!! (sivu 8)

Post by KankiKalle »

Kuinkas aloittelijaystävällinen tämä ChaosBasic oikein on? Vaikuttaa mielenkiintoiselta mutta en ole tajunnut pätkän vertaa mitä täällä on keskusteltu :cry:
Jonkilaista yhteenvetoa tai vastaavaa kaipaisin tästä kielestä. Ja onnee kotisivuista ja foorumista.
Väsyttää niin ettei jaksa edes mennä lepäämään.
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: ChaosBasic - FOORUMIT AVATTU!! (sivu 8)

Post by Jare »

KankiKalle wrote:Kuinkas aloittelijaystävällinen tämä ChaosBasic oikein on? Vaikuttaa mielenkiintoiselta mutta en ole tajunnut pätkän vertaa mitä täällä on keskusteltu :cry:
Jonkilaista yhteenvetoa tai vastaavaa kaipaisin tästä kielestä. Ja onnee kotisivuista ja foorumista.
Näin pikaisena kommenttina sainoisin, että ChB:n aloittelijaystävällisyys ei vielä ole mitään CoolBasicin luokkaa. Manuaali löytyy kyllä - ja sekin on kehittynyt tässä matkan varrella paremmaksi kuin ennen - mutta se on edelleen puutteellinen. Osa olemassa olevista metodeista taisi puuttua sieltä.

Sellainen perustavan laatuinen ohjelmointitaito (esim. juuri CoolBasicilla) kannattaa olla, ennen kuin ChB:tä kokeilee. Kielessä pääsee kuitenkin varsin hyvin kärryille kun kokeilee sen mukana tulevia esimerkkikoodeja ja selailee manuaalia. Kyllä se siitä lähtee. Ehkä aloittelijaystävällisyys ei vielä ole korkealla, mutta se on ymmärrettävää kun kieli on vielä näin keskeneräinen.

Päänvaivaa aiheuttanee alkuun oikestaan lähinnä se, että monia CB:stä tuttuja peruskomentoja ja funktioita ei vielä ole ChaosBasicissa. Näitä voi toki korvata omilla funktioillaan.

Kannattaa kokeilla ja tulla mukaan kielen käyttöön jo tässä vaiheessa, sillä onhan tämä varsin lupaava työkalu pelien tekemiseen! Erityisesti suosittelen tutustumista jo nyt, mikäli olet kiinnostunut luokista. Luokathan ovat tulossa CoolBasiciinkin joskus hamassa tulevaisuudessa (kyllä, uskon edelleen kaikkivaltiaaseen Zeroon ja hänen "poikansa", CoolBasicin, uuteen tulemiseen), joten niiden toimintaan pääsee tutustumaan jo nyt ChaosBasicissa erittäin hyvin.
Post Reply