android打地鼠游戏
时间: 2023-10-18 22:01:19 浏览: 142
好的,这是一个简单的Android打地鼠游戏示例:
1. 首先,在Android Studio中创建一个新的Android项目。
2. 在XML布局文件中添加一个ImageView和若干个Button,分别表示地鼠和打击地鼠的锤子。
3. 在Java代码中,使用Random类生成地鼠出现的位置,并在ImageView中显示地鼠图片。
4. 给锤子Button添加点击事件,当点击时判断锤子的位置是否与地鼠重叠,如果重叠则打中地鼠,否则不做任何操作。
5. 设置一个计时器,每隔一定时间生成一个地鼠,直到游戏结束。
6. 在游戏结束时,显示得分并询问是否重新开始游戏。
下面是示例代码:
activity_main.xml:
```
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".MainActivity">
<ImageView
android:id="@+id/moleImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/mole" />
<Button
android:id="@+id/hammerBtn1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_marginLeft="50dp"
android:layout_marginBottom="50dp"
android:background="@drawable/hammer" />
<Button
android:id="@+id/hammerBtn2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="50dp"
android:background="@drawable/hammer" />
<Button
android:id="@+id/hammerBtn3"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="50dp"
android:layout_marginBottom="50dp"
android:background="@drawable/hammer" />
</RelativeLayout>
```
MainActivity.java:
```
public class MainActivity extends AppCompatActivity {
private ImageView moleImage;
private Button hammerBtn1, hammerBtn2, hammerBtn3;
private int score = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
moleImage = findViewById(R.id.moleImage);
hammerBtn1 = findViewById(R.id.hammerBtn1);
hammerBtn2 = findViewById(R.id.hammerBtn2);
hammerBtn3 = findViewById(R.id.hammerBtn3);
hammerBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkHit(hammerBtn1);
}
});
hammerBtn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkHit(hammerBtn2);
}
});
hammerBtn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkHit(hammerBtn3);
}
});
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
showMole();
}
});
}
}, 0, 2000);
}
private void showMole() {
Random random = new Random();
int x = random.nextInt(getWindowManager().getDefaultDisplay().getWidth() - moleImage.getWidth());
int y = random.nextInt(getWindowManager().getDefaultDisplay().getHeight() - moleImage.getHeight());
moleImage.setX(x);
moleImage.setY(y);
moleImage.setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
moleImage.setVisibility(View.GONE);
}
}, 1000);
}
private void checkHit(Button hammerBtn) {
Rect moleRect = new Rect();
moleImage.getHitRect(moleRect);
Rect hammerRect = new Rect();
hammerBtn.getHitRect(hammerRect);
if (Rect.intersects(moleRect, hammerRect)) {
score++;
Toast.makeText(this, "打中了!", Toast.LENGTH_SHORT).show();
moleImage.setVisibility(View.GONE);
}
}
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("游戏结束");
builder.setMessage("得分:" + score + "\n是否重新开始游戏?");
builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
score = 0;
recreate();
}
});
builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.show();
}
}
```
这个示例中只有一个地鼠,可以根据需要修改代码以添加更多的地鼠,或者增加游戏难度、增加音效等。
阅读全文