Skip to content

Instantly share code, notes, and snippets.

@GravenilvecTV
Created April 12, 2020 08:20
Show Gist options
  • Save GravenilvecTV/10c8e009cb6ff061adaa73d0c99815c7 to your computer and use it in GitHub Desktop.
Save GravenilvecTV/10c8e009cb6ff061adaa73d0c99815c7 to your computer and use it in GitHub Desktop.
Correction TP 23/30 - Android - Jeu blind test
<?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=".BlindtestActivity"
android:id="@+id/reponses">
<Button
android:id="@+id/btn1"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="Bouton 1"
android:textSize="25dp"
android:padding="25dp"
android:background="@color/colorPurple"
android:textColor="@color/colorWhite"
android:layout_marginTop="80dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<Button
android:id="@+id/btn2"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="Bouton 2"
android:textSize="25dp"
android:background="@color/colorPurple"
android:textColor="@color/colorWhite"
android:padding="25dp"
android:layout_marginTop="50dp"
app:layout_constraintTop_toBottomOf="@id/btn1"
app:layout_constraintStart_toStartOf="@id/btn1"/>
<Button
android:id="@+id/btn3"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="Bouton 3"
android:textSize="25dp"
android:background="@color/colorPurple"
android:textColor="@color/colorWhite"
android:padding="25dp"
android:layout_marginTop="50dp"
app:layout_constraintTop_toBottomOf="@id/btn2"
app:layout_constraintStart_toStartOf="@id/btn2"/>
<Button
android:id="@+id/btn4"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="Bouton 4"
android:textSize="25dp"
android:background="@color/colorPurple"
android:textColor="@color/colorWhite"
android:padding="25dp"
android:layout_marginTop="50dp"
app:layout_constraintTop_toBottomOf="@id/btn3"
app:layout_constraintStart_toStartOf="@id/btn3"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<?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">
<Button
android:id="@+id/playBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Jouer"
android:textSize="34dp"
android:padding="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<?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">
<Button
android:id="@+id/playBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Jouer"
android:textSize="34dp"
android:padding="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
package fr.gravendev.blindtestapp;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class BlindtestActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blindtest);
Random random = new Random();
// recuperer l'extra NomChanson
String nomChanson = getIntent().getStringExtra("NomChanson");
// liste de fausses musique
List<String> faussesMusiques = new ArrayList<>();
faussesMusiques.add("Pitakara");
faussesMusiques.add("Los Del mondos");
faussesMusiques.add("True love");
faussesMusiques.add("Filodo");
faussesMusiques.add("El amor que calor");
faussesMusiques.add("C++ song");
faussesMusiques.add("The night of Rust");
faussesMusiques.add("Ardente de mi cuerpo");
// generation des fausses musique
ConstraintLayout rootLayout = findViewById(R.id.reponses);
int count = rootLayout.getChildCount();
// pour chaque element
for(int i = 0; i < count; i++){
final Button button = (Button) rootLayout.getChildAt(i);
int randomNumber = random.nextInt(faussesMusiques.size() - 1);
String fausseMusiqueGenere = faussesMusiques.get(randomNumber);
button.setText(fausseMusiqueGenere);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// afficher un toast (un petit message pendant quelques instants)
Toast.makeText(getApplicationContext(), "Perdu !", Toast.LENGTH_SHORT).show();
button.setEnabled(false);
prochaineMusique();
}
});
}
// choisir au hasard un bouton avec la bonne réponse
int numeroBonneReponse = random.nextInt(count);
final Button bonneReponseBtn = (Button) rootLayout.getChildAt(numeroBonneReponse);
bonneReponseBtn.setText(nomChanson);
bonneReponseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// afficher un toast lors de la victoire (un petit message pendant quelques instants)
bonneReponseBtn.setEnabled(false);
Toast.makeText(getApplicationContext(), "Bravo !", Toast.LENGTH_SHORT).show();
prochaineMusique();
}
});
}
public void prochaineMusique() {
// attendre 2s
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// redirection vers l'ecoute d'une nouvelle musique
finish();
startActivity(new Intent(getApplicationContext(), ListenMusicActivity.class));
}
}, 2000);
}
}
package fr.gravendev.blindtestapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import java.util.Random;
public class ListenMusicActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listen_music);
// rendre la musique aleatoire
int[] sons = new int[] {
R.raw.backpack,
R.raw.moonlight,
R.raw.notosa,
R.raw.oiseaux,
R.raw.papillon,
R.raw.rotodo,
R.raw.sans_commentaire
};
// le nom des musiques
String[] nomMusiques = {
"Backpack",
"Moonlight",
"Notosa",
"Oiseaux",
"Papillon bleu",
"Rotodo",
"Sans Commentaire"
};
// choisir une à partir de ce tableau
Random random = new Random();
final int nombreHasard = random.nextInt(sons.length-1);
int resourceHasard = sons[nombreHasard];
final String nomChanson = nomMusiques[nombreHasard];
// lancer la musique papillon.wav
MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), resourceHasard);
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// creer l'action
Intent intent = new Intent(getApplicationContext(), BlindtestActivity.class);
intent.putExtra("NomChanson", nomChanson);
finish();
startActivity(intent);
}
});
}
}
package fr.gravendev.blindtestapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// recuperer le bouton qui s'appelle playBtn
Button playBtn = findViewById(R.id.playBtn);
// associer le bouton à un evenement
playBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
startActivity(new Intent(getApplicationContext(), ListenMusicActivity.class));
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment