Conway's Game of life CB.llä

Jaa meneillään olevat projektisi tai valmiit pelit muun yhteisön kanssa täällä.
Post Reply
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Conway's Game of life CB.llä

Post by Wingman »

Tein tällaisen pienen soluautomaatiosimulaattorin, johon ajattelin jotenkin saada RuleTablen toimimaan, mutta nyt tein solujen toiminnan select...case -rakenteella.
pidemmittä puheitta, tässä koodi. Jos joku innostuu tätä käyttämään, mainitkoot minut tekijöissä.

Code: Select all

//conway's life on CB by Elias Linjama
Const BX=8
Const BY=8
Dim cell(400/BX,300/BY) 
Dim cell2(400/BX,300/BY) 
For x=1 To 400/BX
	For y=1 To 300/BY
		cell(x,y)=0 
		cell2(x,y)=0 
	Next y
Next x
run=0
t=50
Repeat
	For x=1 To 400/BX
		For y=1 To 300/BY
			If cell(x,y)=0 Then 
				Color 1,1,1
				Box x*BX,y*BY,BX,BY,cell(x,y)
			EndIf 
			If cell(x,y)=1 Then
				Color 255,255,255
				Box x*BX,y*BY,BX,BY,cell(x,y)
			EndIf 
			If MouseX()-x*BX<BX And MouseY()-y*BY<BY And MouseY()-y*BY>0 And MouseX()-x*BX>0 Then 
				If MouseHit(1) Then 
					cell(x,y)=1
				ElseIf MouseHit(2) Then 
					cell(x,y)=0
				Else 
					Color 255,0,0
					Box x*BX,y*BY,BX,BY,0
					Color 255,255,255
				EndIf 
			EndIf 
			sur=cell(x-1,y)+cell(x-1,y-1)+cell(x,y-1)+cell(x+1,y-1)+cell(x+1,y)+cell(x+1,y+1)+cell(x,y+1)+cell(x-1,y+1)
				If run=r Then 	
					Select sur
						Case 1
							Select cell(x,y)
								Case 0
									cell2(x,y)=0
								Case 1
									cell2(x,y)=0
							EndSelect 
						Case 2
							Select cell(x,y)
								Case 0
									cell2(x,y)=0
								Case 1
									cell2(x,y)=1
							EndSelect 
						Case 3
							Select cell(x,y)
								Case 0
									cell2(x,y)=1
								Case 1
									cell2(x,y)=1
							EndSelect 
						Case 4
							Select cell(x,y)
								Case 0
									cell2(x,y)=0
								Case 1
									cell2(x,y)=0
							EndSelect 
						Case 5
							Select cell(x,y)
								Case 0
									cell2(x,y)=0
								Case 1
									cell2(x,y)=0
							EndSelect 
						Case 6
							Select cell(x,y)
								Case 0
									cell2(x,y)=0
								Case 1
									cell2(x,y)=0
							EndSelect 
						Case 7
							Select cell(x,y)
								Case 0
									cell2(x,y)=0
								Case 1
									cell2(x,y)=0
							EndSelect 
						Case 8
							Select cell(x,y)
								Case 0
									cell2(x,y)=0
								Case 1
									cell2(x,y)=0
							EndSelect 
						Default 
							Select cell(x,y)
								Case 0
									cell2(x,y)=0
								Case 1
									cell2(x,y)=0
							EndSelect 
					EndSelect 
				EndIf  
		Next y
	Next x
	run=run+KeyHit(57)
	t=t+(KeyHit(16)-KeyHit(30))*5
	If KeyDown(28) Then 
		If Timer()>ti+t Then 
			run+1
			ti=Timer()
		EndIf 
	EndIf 
	If run>r Then 
		For x=BX To 400/BX
			For y=BY To 300/BY
				cell(x,y)=cell2(x,y)
			Next y
		Next x
		r=run
	EndIf 
	If g>g2+1 Then g=g2
	SetWindow ""+run+" "+t
	DrawScreen 
Forever 
EDIT:

Ja aina unohdan kontrollit kertoa, hiirellä naputellaan soluja matriisiin ja spacella mennään yksi generaatio eteenpäin, enterillä se menee jatkuvasti eteenpäin. Q+A näppäimillä voi vaihtaa nopeutta, eli kuinka monta millisekuntia enteriä pitää pitää pohjassa ennen seuraavaa generaatiota

EDIT:

Nyt on koodi korjattu, ei pitäisi mavata for-looppien takia enää

EDIT:

korjasin vielä kunnolla :D

Last edited by Wingman on Sat Apr 16, 2011 11:38 am, edited 3 times in total.
- - - -
User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Conway's Game of life CB.llä

Post by KillBurn »

Homma kaatuu heti alussa MAViin. Vika luultavasti alun for-next rakenteessa.
Sumu Games: Sam, Ur eye!
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: Conway's Game of life CB.llä

Post by Misthema »

Ööööh... Varmasti toimii hienosti ja silleen, mutta itse en saanut toimimaan tuota. Jäi muutenkin mietityttämään, että miksi sinulla on taulukot (400/BX)*(300/BY), mutta käyt niitä kuitenkin läpi 400*300 kokoisina BX=8 ja BY=8 stepeillä...?
Koitapa korjata tuo niin pääsisi testaamaan kunnolla, eikä tarvitsisi itse korjailla. =)
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: Conway's Game of life CB.llä

Post by Wingman »

Noin. Tosiaan, ihmettelin vähän itsekkin mavia, mutta tuohan se oli vikana. Korjasin siis taulukoiden läpikäynnit ja nyt toimii
- - - -
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: Conway's Game of life CB.llä

Post by Misthema »

Noniin, johan alkoi toimimaan ja näytti tosi veikeeltä, juuri niin kuin pitääkin(?). =)
User avatar
TukeKoodi
Active Member
Posts: 142
Joined: Thu Feb 03, 2011 7:40 pm
Location: C:\Työpöytä

Re: Conway's Game of life CB.llä

Post by TukeKoodi »

Noni, just tällaista mä laivanupotukseen tarvitsinkin. Kai saa käyttää??
Aloittelija, koodaaja, jotain...
CbFUN :D
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Conway's Game of life CB.llä

Post by Viltzu »

TukeKoodi wrote:Noni, just tällaista mä laivanupotukseen tarvitsinkin. Kai saa käyttää??
Lue se aloitusposti ennen kuin kyselet.

Hyvin toimii :) Ihan jännän näköinen kun on paljon soluja ja painaa enter pohjassa :>
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Conway's Game of life CB.llä

Post by Latexi95 »

Onhan se ihan jännän näköinen, mutta en aivan tajunnut mihin tätä käytetään.
User avatar
TukeKoodi
Active Member
Posts: 142
Joined: Thu Feb 03, 2011 7:40 pm
Location: C:\Työpöytä

Re: Conway's Game of life CB.llä

Post by TukeKoodi »

Mihin vain. Esimerkiksi ristinollaan, laivanupotukseen, väripalettiin, lautapeleihin, kaikkeen missä tarvitaan "ruudukko" jonkun asettamiselle jne.
Last edited by TukeKoodi on Sat Apr 16, 2011 11:39 pm, edited 1 time in total.
Aloittelija, koodaaja, jotain...
CbFUN :D
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Conway's Game of life CB.llä

Post by TheFish »

TukeKoodi wrote:Mihin vain. Esimerkiksi ristinollaan, laivanupotukseen, kaikkeen missä tarvitaan "ruudukko" jonkun asettamiselle jne.
Latexi95 varmaankin puhui itse Game of Life:stä, eikä pelkästään solujen asettelemisesta. Eipä tuolla "pelillä" minun tietojeni mukaan mitään varsinaista käyttöä ole. Kunhan vain voi katsoa mitä tapahtuu erilaisilla alkuasetelmilla.
CoolBasic henkilökuntaa
Kehittäjä
Post Reply