[Android] การเช็คเงื่อนไขโดยใช้ if เช็ครูปภาพจาก drawable
เราทำเกมจับคู่รูปภาพน่ะค่ะ ต้องการให้จับคู่แล้วแสดง Alert Dialog เป็นรายละเอียดของรูปๆนั้น
โดยรายละเอียดของแต่รูปแต่ละคู่ที่จับได้ จะไม่เหมือนกัน ซึ่งเราต้องเช็คว่ารูปที่จับคู่นั้นเป็นรูปอะไร แล้วแสดงรายละเอียดให้ตรง
ซึ่งภาพเราประกาศเป็น Array
Code (Android-Java)
private Integer[] mThumbIds = { R.drawable.one, R.drawable.one,
R.drawable.two, R.drawable.two , R.drawable.three,
R.drawable.three, R.drawable.four, R.drawable.four,
R.drawable.five , R.drawable.five , R.drawable.six,
R.drawable.six , R.drawable.seven , R.drawable.seven,
R.drawable.eight , R.drawable.eight , R.drawable.nine,
R.drawable.nine , R.drawable.ten , R.drawable.ten };
int opened = 0;
int firstClick, secondClick;
แล้วก็มีการ random ภาพจาก Array แล้วทำการสลับที่ภาพ
Code (Android-Java)
private void shuffleArray(Integer[] mThumbIds2) {
// TODO Auto-generated method stub
Random rnd = new Random();
for (int i = mThumbIds2.length - 1; i >= 0; i--) {
int index = rnd.nextInt(i + 1);
// Simple swap
int a = mThumbIds2[index];
mThumbIds2[index] = mThumbIds2[i];
mThumbIds2[i] = a;
}
}
มีการเช็คว่าภาพแรกที่เปิด ตรงเป็นภาพที่สองที่เปิดไหม???? ถ้าตรงก้อให้ภาพหายไป removeImage ถ้าไม่ตรงก้อพลิกกลับ cardBack
Code (Android-Java)
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
imageView = (ImageView) v;
imageView.setAdjustViewBounds(true);
opened++;
final Handler handler = new Handler();
if (opened == 1) {
firstClick = position;
firstView = (ImageView) v;
imageView.setImageResource(mThumbIds[position]);
} else if (opened == 2) {
secondClick = position;
if( firstClick != position )
{
imageView.setImageResource(mThumbIds[position]);
imageView.setClickable(false);
if (mThumbIds[firstClick].compareTo(mThumbIds[secondClick])== 0) {
final AlertDialog.Builder adb = new AlertDialog.Builder(this);
if (................เป็นรูปแอปเปิ้ล......................) {
AlertDialog ad = adb.create();
ad.setMessage("Message");
ad.show();
} else if (................เป็นรูปฝรั่ง......................) {
AlertDialog ad = adb.create();
ad.setMessage("Message 2");
ad.show();
handler.postDelayed(removeImage, 800);
} else {
handler.postDelayed(cardBack, 600);
}
}
} else
{
handler.postDelayed(cardBack, 600);
}
}
ส่วนตรงที่เราทำไม่ได้คือ if(............................) ไม่รุ้ว่าจะเอาภาพมาเช็คยังไง เพราะค่าที่เก็บในตัวแปรมีแต่ค่าของต่ำ
แหน่ง position ช่วยดูให้หน่อยนะค่ะTag : Mobile, Android
Date :
2012-11-17 01:05:26
By :
formicz
View :
3199
Reply :
6
Code (Android-Java)
imageView.setTag("image resource name");
Code (Android-Java)
String imageName = (String) imageView.getTag();
setTag แล้ว getTag เอามาเปรียบเทียบกันก็ได้ครับ
Date :
2012-11-18 08:49:04
By :
mr.win
เรายังไม่เข้าใจว่าจะ settag ยังไง คือเรามีหลายภาพ แล้วเก็บไว้ใน Array อ่าค่ะ รบกวนหน่อยนะ
คือเราไม่ค่อยเก่ง
Date :
2012-11-22 01:56:34
By :
formicz
ถ้าเอาง่ายๆ ถึกๆหน่อยก็
Code (Android-Java)
if (................เป็นรูปแอปเปิ้ล......................) ------> เปลี่ยนเป็น
if (mThumbIds[firstClick] == R.drawable.one ) //---> เช็คว่า firstclick มันเท่ากับ รูป R.drawable.one นี่หรือเปล่า ถ้าใช่ก็ show message ขึ้นมา
{
AlertDialog ad = adb.create();
ad.setMessage("Message");
ad.show();
}
else if (mThumbIds[firstClick] == R.drawable.two )
{
AlertDialog ad = adb.create();
ad.setMessage("Message");
ad.show();
}
else if (mThumbIds[firstClick] == R.drawable.three )
{
AlertDialog ad = adb.create();
ad.setMessage("Message");
ad.show();
}
.
.
.
.
.
else if (mThumbIds[firstClick] == R.drawable.ten )
{
AlertDialog ad = adb.create();
ad.setMessage("Message");
ad.show();
}
ปล. เหตุที่ผมให้เช็ค mThumbIds[firstClick] เพราะว่า mThumbIds[firstClick] และ mThumbIds[secondclick] มีการเช็คว่า compare กันแล้ว เพราะฉะนั้น ไม่จำเป็นต้องเช็คอีก
Date :
2012-11-22 15:51:52
By :
alek
ทำได้แล้วค่ะ ขอบคุณมากกกค่ะ
เราขอถามอีกอย่าง คือว่า AlertDialog จะโชว์เป็นรูปภาพได้มั๊ยค่ะ
หรือว่าต้องเป็น String เท่านั้น คือลอง setImageResource แล้วไม่ได้ ^^
ประวัติการแก้ไข 2012-11-22 22:59:28
Date :
2012-11-22 20:14:35
By :
formicz
มีการเช็คว่า Text1 นี้ ตรงกับ SongTitle1 นี้หรือเปล่า หากใช่ ให้เปิด เว็บนี้http://www.allmusic.com/album/freedom-mw0000802592
หากไม่ใช่...
เช็คต่อว่า Text1 เป็น ตรงกับ SongTitle2 หรือเปล่า หากใช้ ให้เปิดเว็บนี้ http://www.allmusic.com/album/unorthodox-jukebox-mw0002438815
หากไม่มีดังที่กล่าวมา จะโชวคำว่า "ไม่มีเพลงดังกล่าว"
Date :
2013-10-02 03:07:38
By :
Hardjango
Load balance : Server 01