package com.example.chirag.example;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
TextView TV;
Button upbutton;
Button downbutton;
TextView score;
String n1;
int bool=0;
int a;
int b;
int sc=0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView TV = (TextView)findViewById(R.id.TV);
TextView score = (TextView)findViewById(R.id.score);
Button upbutton = (Button) findViewById(R.id.upbutton);
Button downbutton = (Button) findViewById(R.id.downbutton);
Button start = (Button) findViewById(R.id.start);
n1 = generate();
TV.setText(n1);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
start();
}
});
}
String generate()
{
TextView TV = (TextView)findViewById(R.id.TV);
int n = new Random().nextInt(20);
String s = String.valueOf(n);
return s;
}
void start() {
Runnable myRunnable = new Runnable() {
@Override
public void run()
{while (bool == 0) {
final TextView TV = (TextView) findViewById(R.id.TV);
final TextView score = (TextView) findViewById(R.id.score);
Button upbutton = (Button) findViewById(R.id.upbutton);
Button downbutton = (Button) findViewById(R.id.downbutton);
Button start = (Button) findViewById(R.id.start);
String n2 = generate();
TV.setText(n2);
a = Integer.valueOf(n1.toString());
b = Integer.valueOf(n2.toString());
if (a > b) {
downbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String n3 = generate();
TV.setText(n3);
a = b;
b = Integer.valueOf(n3.toString());
score.setText("Score" + (sc + 1));
}
});
upbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TV.setText("Game Over");
bool = 1;
}
});
} else {
upbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String n3 = generate();
TV.setText(n3);
a = b;
b = Integer.valueOf(n3.toString());
score.setText("Score" + (sc + 1));
}
});
downbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TV.setText("Game Over");
bool = 1;
}
});
}
}
}
};
Thread myThread = new Thread(myRunnable);
myThread.start();
}
}
コードをランナブルに入れました。ロジックは正しいようですが、機能しません。generateメソッドは新しい番号を作成し、それを「TV」に表示します。開始をクリックすると、新しい番号が生成され、2番目の番号が最初の番号と比較されます。正しいボタン(上または下)が押されると、スコアが増加し、プロセスが続行されます。間違ったボタンがクリックされた場合の「ゲームオーバー」
別のスレッドからUIに触れることはできません。AndroidのすべてのUIタスクは、UIスレッドとも呼ばれるメインスレッドで実行する必要があります。この行は(たとえば)run()
非メインスレッドのコマンド内からUIに影響を与えようとします:
TV.setText(n2);
UIスレッドと通信する方法については、このチュートリアルを参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加