我是 java 和 android 的初学者,现在我正在尝试编写“simon says”游戏来学习这种语言,但这不能正常工作。:-(
第一个也是最重要的问题:当我尝试使用方法 seq_show().. 显示存储在数组 seq[] 中的颜色序列 [编号 1 到 4] 时,调用 but_show(x) 来更改背景颜色每个按钮的...但是我看不到相应线性布局的背景颜色的变化...而且我已经擦除了READY?源代码按钮,因为在 seq_show() 之前没有关闭。
我不明白这个java的编程方式......不是逐行,一步一步......我的事情是线程,我不明白执行代码的指针在哪里。:-(
有人能帮我吗 ?
然后,在方法 seq_input() 中,我捕捉到了 LinearLayout 上的点击……我认为这运行良好……但我需要先解决 seq_show() 问题才能继续执行该程序。
谢谢 !!
public class MainActivity extends Activity {
public LinearLayout l1, l2, l3, l4;
public GestureDetector gd1,gd2,gd3,gd4;
public static int seq[] = new int[25];
public int seq_pos = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Array pos[] amb 25 clics del joc simon
//
for (int i = 0; i < 25; i++) {
seq[i] = (int) (Math.random() * 4) + 1;
}
// declaració 4 onClickListener
//
l1 = (LinearLayout) findViewById(R.id.layout_green);
l1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
seq_input(1);
}
});
l2 = (LinearLayout) findViewById(R.id.layout_red);
l2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
seq_input(2);
}
});
l3 = (LinearLayout) findViewById(R.id.layout_yellow);
l3.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
seq_input(3);
}
});
l4 = (LinearLayout) findViewById(R.id.layout_blue);
l4.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
seq_input(4);
}
});
seq_show(0);
}
// Mostra la sequencia de botons a pulsar
//
public void seq_show(int seq_end) {
for (int i=0; i <= seq_end; i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
but_show(seq[i]);
}
}
// Espera la pulsació de la sequencia de botons
//
public void seq_input(int but_pushed){
if (seq[seq_pos] == but_pushed) {
seq_pos++;
but_show(seq[but_pushed]);
seq_show(seq_pos);
}else{
MediaPlayer sound = MediaPlayer.create(this, R.raw.wrong);
sound.start();
new Handler().postDelayed(new Runnable() {
public void run() {
}
}, 1000);
}
}
// Canvia el color i emet un so al botó but_num
//
public void but_show(int but_num) {
if (but_num == 1) {
l1.setBackgroundResource(color.green_on);
MediaPlayer sound = MediaPlayer.create(this, R.raw.tone_green);
sound.start();
new Handler().postDelayed(new Runnable() {
public void run() {
l1.setBackgroundResource(color.green_off);
}
}, 200);
} else if (but_num == 2) {
l2.setBackgroundResource(color.red_on);
MediaPlayer sound = MediaPlayer.create(this, R.raw.tone_red);
sound.start();
new Handler().postDelayed(new Runnable() {
public void run() {
l2.setBackgroundResource(color.red_off);
}
}, 200);
} else if (but_num == 3) {
l3.setBackgroundResource(color.yellow_on);
MediaPlayer sound = MediaPlayer.create(this, R.raw.tone_yellow);
sound.start();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
l3.setBackgroundResource(color.yellow_off);
}
}, 200);
} else if (but_num == 4) {
l4.setBackgroundResource(color.blue_on);
MediaPlayer sound = MediaPlayer.create(this, R.raw.tone_blue);
sound.start();
// SLEEP HERE ...
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
l4.setBackgroundResource(color.blue_off);
}
}, 200);
}
}
再见 !!