Освой программирование играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Для игры в кости нам понадобится шесть изображений развёртки кубика. Дадим им имена по порядку: dice_1.png, dice_2.png и т.д.
Разметка простая - два изображения и кнопка.
<?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">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="80dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageview_left"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginRight="20dp"
android:src="@drawable/dice_2"/>
<ImageView
android:id="@+id/imageview_right"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/dice_4"/>
</LinearLayout>
<Button
android:id="@+id/button_roll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="30dp"
android:text="Бросить"
android:textSize="20sp"/>
</RelativeLayout>
Осталось написать код, который будет выбирать случайное число от 1 до 6 и выводить нужную картинку на экран.
package ru.alexanderklimov.dice;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private ImageView mLeftImageView;
private ImageView mRightImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button rollDicesButton = (Button) findViewById(R.id.button_roll);
mLeftImageView = (ImageView) findViewById(R.id.imageview_left);
mRightImageView = (ImageView) findViewById(R.id.imageview_right);
rollDicesButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Получим случайные числа для двух костей
int value1 = randomDiceValue();
int value2 = randomDiceValue();
// Находим ресурс с этими числами
int res1 = getResources().getIdentifier("dice_" + value1,
"drawable", "ru.alexanderklimov.dice");
int res2 = getResources().getIdentifier("dice_" + value2,
"drawable", "ru.alexanderklimov.dice");
mLeftImageView.setImageResource(res1);
mRightImageView.setImageResource(res2);
}
});
}
private int randomDiceValue() {
Random random = new Random();
return random.nextInt(6) + 1;
}
}