Создаем игру "Русская Рулетка"!

Всем привет! На этом уроки начинаем создание простенькой игры “Русская Рулетка”. Я думаю всем знакома эта не детская игра но в нашем случае это безобидная игра в которую можно поиграть с друзьями. Смысл игры прост, игрок нажимает на кнопку прокрутки барабана револьвера и после жмет на кнопку “курок” или “выстрел”. В если повезло то раздастся звук спущенного курка без выстрела что означает что игроку повезло и очередь переходит к следующему игроку, и.т.д Если игроку не повезло то раздастся звук выстрела что означает что игрок выбыл из игры. Игра ведется до тех пор пока не останется только один игрок.

Ресурсы которые нам понадобятся:

Две картинки “Револьвер” и “Капли крови” помещаем в папку drawable, три звука помещаем в папку которую нам нужно создать (смотрите видео) raw.

<<<По этой ссылке скачиваем все нужные ресурсы которые нам понадобяться, это звуки и картинки.>>>

Часть 1:

В этой части мы добавим все необходимые ресурсы и проверим что бы все работало. Для этого мы добавим три кнопки и при нажатии на каждую из кнопок будет раздаваться свой звук. У нас есть 3 звука: звук выстрела, звук спущенного курка(без выстрела), звук прокрутки барабана. Все это мы делаем для того что бы проверить что код воспроизведения звука работает. В следующей части уже добавим код для случайного выстрела, тогда при нажатии на кнопку выстрела не всегда будет раздаваться звук выстрела. Смотрите видео, там все объясняю подробно! Ну что начнем. Код основного activity  находиться ниже:

MainActivity.java:

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.TargetApi;

import android.app.Activity;
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {
private SoundPool sounds;
private int sound_shot;
private int sound_shot_false;
private int sound_baraban;
private ImageView blood_image;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createSoundPool();
loadSounds();
blood_image = findViewById(R.id.image_blood);
}
protected void createSoundPool() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
createNewSoundPool();
} else {
createOldSoundPool();
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
protected void createNewSoundPool(){
AudioAttributes attributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
sounds = new SoundPool.Builder()
.setAudioAttributes(attributes)
.build();
}

@SuppressWarnings("deprecation")
protected void createOldSoundPool(){
sounds = new SoundPool(5, AudioManager.STREAM_MUSIC,0);
}
private void loadSounds()
{
sound_shot = sounds.load(this,R.raw.revolver_shot, 1);
sound_shot_false = sounds.load(this,R.raw.gun_false, 1);
sound_baraban = sounds.load(this,R.raw.revolver_baraban, 1);

}

public void onShot(View view)
{
sounds.play(sound_shot,1.0f,1.0f,1,0,1);
blood_image.setVisibility(View.VISIBLE);
}

public void onShotFalse(View view)
{
sounds.play(sound_shot_false,1.0f,1.0f,1,0,1);
}

public void onBaraban(View view)
{
sounds.play(sound_baraban,1.0f,1.0f,1,0,1);
blood_image.setVisibility(View.GONE);
}
}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/gun"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:srcCompat="@drawable/gun"

/>

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onShot"
android:text="Shot"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.082"
app:layout_constraintStart_toStartOf="@+id/imageView"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.859" />

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onShotFalse"
android:text="Shot fales"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.46"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/imageView"
app:layout_constraintVertical_bias="0.859" />

<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="56dp"
android:layout_marginRight="56dp"
android:onClick="onBaraban"
android:text="Baraban"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.962"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/imageView"
app:layout_constraintVertical_bias="0.859" />

<ImageView
android:id="@+id/image_blood"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/blood"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="@+id/imageView"
app:layout_constraintStart_toStartOf="@+id/imageView"
app:layout_constraintTop_toTopOf="@+id/imageView" />

</androidx.constraintlayout.widget.ConstraintLayout>

Часть 2: (Скоро будет доступна)!