gpt4 book ai didi

Android:如何检查两个单击按钮中的两个数字是否相等(内存游戏)?

转载 作者:行者123 更新时间:2023-11-29 19:08:24 27 4
gpt4 key购买 nike

有人可以告诉我如何检查两个数字是否相等吗?我正在制作内存游戏进行练习。用户单击一个显示一个数字的按钮,然后单击另一个显示第二个数字的按钮。如何检查这两个数字是否相同,因为如果它们相同,则需要保持可见,如果它们不相同,则需要再次隐藏。

我的适配器:

package com.example.korisnik.assignment;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import java.util.ArrayList;
import java.util.Collections;

public class ButtonAdapter extends BaseAdapter {

Button[] buttons;
public Context c;

public ButtonAdapter(Context c) {
final ArrayList<Integer> numbers = new ArrayList<Integer>();
for (int i=1; i<=5; i++) {
numbers.add(i);
}
for (int i=1; i<=4; i++) {
numbers.add(i);
}
Collections.shuffle(numbers);
this.c = c;
buttons = new Button[9];
for(int i=0;i<buttons.length;i++) {
final int o = i;
buttons[i] = new Button(c);
buttons[i].setBackgroundResource(R.mipmap.block);
buttons[i].setLayoutParams(new GridView.LayoutParams(300,300));
buttons[i].setTag(0);
buttons[i].setTextSize(20);
buttons[i].setText("X");
buttons[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button btn = (Button) v;
btn.setText(String.valueOf(numbers.get(o)));
}
});
}
}

@Override
public int getCount() {
return buttons.length;
}

@Override
public Object getItem(int i) {
return buttons[i];
}

@Override
public long getItemId(int i) {
return 0;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
return buttons[i];
}
}

最佳答案

试试这段代码。

public class ButtonAdapter extends BaseAdapter {

Button[] buttons;
public Context c;
//Store previous clicked number
private String mPreviousvValue;

public ButtonAdapter(final Context c) {
final ArrayList<Integer> numbers = new ArrayList<Integer>();
for (int i = 1; i <= 5; i++) {
numbers.add(i);
}
for (int i = 1; i <= 4; i++) {
numbers.add(i);
}
Collections.shuffle(numbers);
this.c = c;
buttons = new Button[9];
for (int i = 0; i < buttons.length; i++) {
final int o = i;
buttons[i] = new Button(c);
buttons[i].setBackgroundResource(R.mipmap.block);
buttons[i].setLayoutParams(new GridView.LayoutParams(300, 300));
buttons[i].setTag(0);
buttons[i].setTextSize(20);
buttons[i].setText("X");
buttons[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String currentValue = String.valueOf(numbers.get(o));
Button btn = (Button) v;
if(mPreviousvValue!=null){
if (mPreviousvValue.equalsIgnoreCase(currentValue)) {
// Show Numbers equal
} else {
// Show Numbers not equal
}
}
btn.setText(currentValue);
mPreviousvValue = currentValue;
}
});
}
}

@Override
public int getCount() {
return buttons.length;
}

@Override
public Object getItem(int i) {
return buttons[i];
}

@Override
public long getItemId(int i) {
return 0;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
return buttons[i];
}
}

编辑 1:说明

将其添加为全局变量以存储之前单击的值

private String mPreviousvValue; 

然后在 onclick 中检查点击按钮的当前值是否等于之前的值。

 @Override
public void onClick(View v) {
String currentValue = String.valueOf(numbers.get(o));
Button btn = (Button) v;
if(mPreviousvValue!=null){
if (mPreviousvValue.equalsIgnoreCase(currentValue)) {
// Show Numbers equal
} else {
// Show Numbers not equal
}
}
btn.setText(currentValue);
mPreviousvValue = currentValue;
}

编辑 2:正如您要求在按钮值不同时清除旧 View

添加一个公共(public)变量来存储以前的按钮位置

private int mPreviousPos=-1; 

然后在 onclick 中存储第一次单击的按钮位置,当用户第二次单击时,如果值不相等,则从数组中获取按钮引用并清除两者,如代码所示。

 @Override
public void onClick(View v) {
String currentValue = String.valueOf(numbers.get(o));
Button btn = (Button) v;
if(mPreviousvValue!=null && mPreviousPos!=-1){
if (mPreviousvValue.equalsIgnoreCase(currentValue)) {

// Show Numbers equal
} else {
// Show Numbers not equal
//Clear previous button
Button button=buttons[mPreviousPos];
button.setText("X");

}
}
btn.setText(currentValue);
mPreviousvValue = currentValue;
mPreviousPos=o;
}

关于Android:如何检查两个单击按钮中的两个数字是否相等(内存游戏)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46299229/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com