Soru & Cevap

tıklama oyunlarındaki mantık ?

20.04.2016 - 11:23

ekrana iki buton ekliyorum birde textview 1.butona tıklayınca text viede sayı artıyor 1er 1er . ekrandaki sayı 10 olmadan 2. buton pasif olsun istiyorum yani tıklanmasın .sayı 10 olunca buton aktif olsun ve tıklayabileyim vebu sefer 1. butona tıklayınca 2şer 2şer artsın ekrandaki sayı. tekrar buton pasif hale gelsin bu sefer ekrandaki sayı 30 olunca aktif olsun ve tıklamayı etkinleştirsin

umarım anlatabilmişimdir sizden ricam nasıl yapılacağına söyleyebilirmisiniz

şimdiden teşekkür ederim

328 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-62423-1460561213.jpg
emre.tsbs
25.04.2016 - 12:24

Ulaş tekrar merhaba,

Anladığım kadarıyla buton2 buton1 in artış miktarını belirleyen bir ayar tuşu olacak. İstemiş olduğun durumda bir sorun ortaya çıkıyor. artış miktarı 1 ve 2 iken sorun yok fakat 3 olduğunda problem başlar. 20-23-26-29-32 diye devam eder dolayısıyla 30 olmaz. Biraz uğraştım geometrik bir artış miktarı yaptım. 0-10 arası artış 1, 10-20 arası artış 2, 20-40 arası artış 4, 40-80 arası artış 8 şeklinde devam edip sonsuza gidiyor. Ancak sonsuza göndermek yerine bir üst sınır koymanı tavsiye ederim. Çünkü her defasında bir for döngüsüne giriyor.

MainActivity.java

package xxx

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView tv;
    Button btn1, btn2;
    int sayi;
    int sayiEkle = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = (TextView)findViewById(R.id.textView);
        btn1 = (Button)findViewById(R.id.button);
        btn2 = (Button)findViewById(R.id.button2);

        btn2.setEnabled(false);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (sayi<10){
                    sayi++;
                }else if (sayi>=10){
                    sayi += sayiEkle;
                }
                if (sayi>0 && sayi%10==0){
                    btn2.setEnabled(true);
                }

                tv.setText("Sayı: " + sayi);
            }
        });

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                artirici();
                btn2.setEnabled(false);
            }
        });

    }

    public void artirici(){
        for (int i=0;i<sayi;i++){
            if (i%10==0){
                sayiEkle++;
            }
        }
    }
}

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
    android:orientation="vertical">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:gravity="center_vertical|center_horizontal">

        <TextView
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:id="@+id/textView" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:gravity="center_vertical|center_horizontal">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Buton1"
            android:id="@+id/button" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Buton2"
            android:id="@+id/button2" />
    </LinearLayout>
</LinearLayout>

 

Kolay gelsin.

Ulaş Yılmaz
25.04.2016 - 08:20
cevabınız için çok teşekkür ederim. bahsettiğim şey tam 30 olunca değil 30 ve üstünde bi sayı olunca aktif olmasıydı ama sizin verdiğiniz örnek kodlar bu işimi görecektir Tekrar teşekkür edrim hayırlı günler dilerim.
Emre Taşbaş
25.04.2016 - 02:47
Bu yazdığım algoritmadan yola çıkarak onu yapabilirsin diye tahmin ediyorum, kolay gelsin.
picture-62423-1460561213.jpg
emre.tsbs
22.04.2016 - 03:33

Ulaş Merhaba,

Şuan Anroid Studio açık değil kabaca yazmaya çalışacağım.

btn1 ve btn2 buton değişkenlerimiz, int sayi değişkenimiz, tv textView değişkenimiz olsun. Kalan tüm kodları onCreate metodu içine yazabilirsin.

//Sayı değişkenini her defasında textView içine yazdırır.
tv.setText("" + sayi);

//btn2 başlangıçta pasif olsun.
btn2.setEnabled(false);

//btn1 tıklanma durumu
btn1.setOnClickListener... {

//sayi 1 artsın.
sayi++;

//Eğer sayı 10 ise,
if(sayi==10){

//sayi 2şer artsın.
sayi+2;

//btn2 aktif olsun
btn2.setEnabled(true);
}
//Tekrar ne zaman pasif olacağını söylememişsin ama
//ben 20 kabul ediyorum.
if(sayi==20){
btn2.setEnabled(false);
//sayi hala 2şer artmaya devam eder çünkü yeni komut vermedik.
}
//Eğer sayi 30 ise,
if(sayi==30){
btn2.setEnabled(true);
//yeni durum belirlemediğimiz için sayı hala 2şer artar.
}
}

btn2 ile ilgili bir durum sormamışsın ama onunla ilgili sorgu yaparken sadece aktif olduğu durumda tıklanabileceğini unutma. Bu şekilde istediğin gibi türetebilirsin. Kolay gelsin.

Ulaş Yılmaz
23.04.2016 - 11:30
Öncelikle cevap verdiğiniz için teşekkür ediyorum tekrar açıklayıcı olarak anlatmaya çalışayım -ekrandaki sayı buton1 e tıklayınca 1er 1er artacak -2.buton pasif olacak ilk olarak -ekrandaki sayı 10 geldiğinde 2.buton aktif olacak -2.butona tıklanıldığında buton1 bu sefer 2şer 2şer artacak -ve 2.buton tekrar pasif olacak çünkü bu sefer daha yüksek bi değer isteyecek -ve yine 2.butonun istediği değere geldiğinde tekrar aktif olacak -buton1 e tıklanıldığında yine tıklama değeri artacak -2.buton daha bi yüksek değer isteyeceğinden tekrar pasif olacak -bu işlem sonsuza kadar devam etsin istiyorum umarım açıklayıcı anlatabilmişimdir
Ulaş Yılmaz
22.04.2016 - 09:53
şöyle anlatayım textview'e sayı değişkenini atadım. buton1 görevi her tıklamada 1 arttırmak. ama buton2 önce pasif olacak eğer sayı değişkeni 10 olursa buton2 aktif olacak. ve buton 2 ye tıklayınca bu sefer her seferinde 1 arttıran buton bir 2şer 2şer arttıracak . buton2 tekrar pasif olacak ve 30 olunca buton 2 tekrar aktif olucak ve tekrar aynı işlemler yapılacak bu sefer 3er 3er artacak yani bunun bu şekilde sürmesini istoyrum buton2 benim istediğim rakama gelince aktif olsun sadece
Emre Taşbaş
23.04.2016 - 02:35
Tamam if(sayi==10){btn2.setEnabled(true); dersin ve btn2 nin setOnClick özelliğini yazıp sayı+2; yi orda çalıştırırsın. Ancak şunu atlıyorsun. btn2 ne zaman pasif olacak? Ayrıca bu iki buton bu işlemi ne zamana kadar devam ettirecekler. Eğer sonsuza kadar gitsin istiyorsan başka yöntem kullanılmalı. Daha detaylı anlatırsan yardımcı olmaya çalışırım. Anlattığın durumda bazı kopukluklar var çünkü.
picture-57989-1451678910.jpg
serdarşen
20.04.2016 - 07:11

Görsel kaldırıldı.

Merhaba Ulaş, denemedim ama diyelimki Button1' e tıklayınca artir(); adında bir metodumuz çalışıyor. Bu metodun içinde bir while döngüsüyle sayımız 10'dan küçük oluncaya değin artır dersin. hemen altına bir if sorgusuyla sayı 9 olduğunda Buton2' yi aktif hale getiren metodu çağırırsın. Altına yeni bir while döngüsü içinde sayı 30' dan küçük oluncaya değin ikişer artır dersin. Yazdıkça şekillenir optimize edebilirsin. tabiki en başta ilkSayi = 1 tanımlarsın, Buton1' i aktif, Buton2'yi pasif başlatırsın. Kolay gelsin.  

/sites/default/files/cevaplar/dosya/2020/file-sayi_oyunu.png
Ulaş Yılmaz
21.04.2016 - 09:09
cevabınız için çok teşekkür ederim anlattığınız şekilde yapmaya çalışacağım
Serdar Şen
21.04.2016 - 09:03
bişey değiil