Ders2: Basic4Android ile sayı tahmin oyunu

Başlatan sigmoid, 24 Ocak 2013, 16:27:32

sigmoid

Hem basit hem de basic4android ile ne kadar kolay bir şekilde program yazabileceğimizi göstermek için basit bir sayı tahmin oyunu yapmaya karar verdim. Tablet 1 ile 100 arasında bir sayı tutuyor ve tutmuş olduğu bu sayıyı bulmaya çalışıyoruz.

Basic4Android programını çalıştırınca File-New ile yeni bir çalışma sayfası açın. PIC programlarken bile önce donanımı kurup sonra yazılımı yazmayı sevdiğimden yazdığımız kodu tablet üzerinde denemeyi seviyorum. İsterseniz siz emulatörde test edebilirsiniz. Sadece Tools-> Run AVD Manager ile emülatörü çalıştırabilirsiniz. Fakat ben direk tablet üzerinde denemeyi tercih ediyorum. Tablete bağlanmak için öncelikle tablete yüklediğimiz B4A Bridge programını çalıştıralım. Sonra basic4android programında Tools->B4A Bridge-> Connect Wireless menüsünden tablete bağlanalım.

Designer menüsüne tıklayıp görsel arayüzümüzü tasarlayalım. 

[IMG]http://img33.imageshack.us/img33/807/designercs.png[/img]

[IMG]http://img132.imageshack.us/img132/9001/abstractdesigner.png[/img]

Sayı tahmin oyunu için 1 buton, 2 label ve sayı değerini girmek için 1 adet EditText eklememiz gerekli. EditText'in inputtype özelliğini NUMBERS olarak değiştirin. Android programlamada Visual Basicte kullanılan bazı terimler farklı isimlendiriliyor. basicte label, text vb objelere component denirken basic4android de view adıyla isimlendirilmiş. Aynı mantıkta form yerine activity ismi kullanılıyor. Designer penceresinde Tools->Connect To Device/Emulator menüsüne tıkladığımızda tasarım penceresinde ne tasarlarsak aynen tabletimizde görebiliyoruz. Abstract Designer penceresinde Layout-> Match Connected Device menüsü ile tasarım ekranının büyüklüğünü cihazımızın ekran çözünürlüğü ile eşleştirelim. Daha sonra designer penceresinde Add view ile componentleri ekleyelim.

[IMG]http://img687.imageshack.us/img687/9651/viewr.png[/img]

Viewler (bundan sonra component yerine view kelimesini kullanacağım.) istediğimiz şekilde olunca Designer penceresinde File->Save menüsü ile yaptığımız çalışmayı kaydedelim. ben burada layout ismi olarak main yazdım.

[IMG]http://img594.imageshack.us/img594/6317/savelayout.png[/img]


Eklemiş olduğumuz viewlere ait tanımlamaları ve eventleri eklemek içinde Tools->Generate Members menüsünü kullanalım. Burada kod ile değişiklik yapacağımız viewlerin isimlerinin yanındaki kutucuklara ve Buton1 altındaki click eventine tik atalım.

[IMG]http://img4.imageshack.us/img4/2961/generatemembers.png[/img]

View isimlerinin yanındaki kutuculara tıklayınca Globals sub functionı içinde

Dim Button1 As Button
	Dim EditText1 As EditText
	Dim Label1 As Label
	Dim Label2 As Label


tanımlamaları yapılır. Bu sayede bu viewlere kod ile ulaşabiliriz. Global function içine bu activity içerisinden ulaşılması gereken değişkenler yazılır. Butona basıldığında yapılması gereken işler ise


Sub Button1_Click

End Sub


içerisine yazılır. Programın tam kodu aşağıdadır.

#Region  Project Attributes 
	#ApplicationLabel: B4A Example
	#VersionCode: 1
	#VersionName: 
	'SupportedOrientations possible values: unspecified, landscape or portrait.
	#SupportedOrientations: unspecified
	#CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region

Sub Process_Globals
	'These global variables will be declared once when the application starts.
	'These variables can be accessed from all modules.

End Sub

Sub Globals
	'These global variables will be redeclared each time the activity is created.
	'These variables can only be accessed from this module.
	Dim sayi As Int
	Dim sayac As Int

	Dim Button1 As Button
	Dim EditText1 As EditText
	Dim Label1 As Label
	Dim Label2 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
	'Do not forget to load the layout file created with the visual designer. For example:
	'Activity.LoadLayout("Layout1")
	Activity.LoadLayout("main")
	Button1.Text="Basla"
	Label1.Text ="Basla butonuna basınız."
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Button1_Click
		Dim sayi2 As Int
	If Button1.Text="Basla" Then
		Yeni
	Else
	
		sayac=sayac+1
		Label2.Text="Tahmin:" & sayac
		sayi2=EditText1.Text
		If sayi=sayi2 Then
			Label1.Text="Tebrikler. Tuttuğum sayıyı bildiniz."
			Button1.Text="Basla"
		Else If sayi>sayi2 Then
			Label1.text="Yukarı"
		Else
			Label1.Text="Aşağı"
		End If
	End If
End Sub


Sub Yeni
 sayi=Rnd(1,100)
 sayac=0
 Label2.Text="Tahmin:" & sayac
 Label1.Text="Tuttuğum sayıyı tahmin edin. (1 ile 100 arasında)"
 Button1.Text="Tamam"
 EditText1.Text=""
End Sub

pisayisi

#1
Teşekkürler eline sağlık, ben de android ile near field communication desteği olan telefonlar için çeşitli uygulamalar yapmak niyetindeydiM. Burdan açılan pencere isabetli oldu, bir soru? android de .apk uzantılı bir dosyada modifikasyon yapmanın basit yolları var mı...
Murat

sigmoid

Bende bu işleri yeni yeni öğreniyorum. Öğrendikçede öğrendiklerimi burada paylaşıyorum.