Skip to content
Snippets Groups Projects
Commit 8170089e authored by victor's avatar victor
Browse files

Feature:

Minijuego 3 añadir sonidos
parent 8e787a2b
Branches
No related tags found
3 merge requests!65Feature:,!42Feature:,!41Feature:
......@@ -6,12 +6,13 @@ import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import com.example.ellegadodepintia.R
import android.view.animation.AnimationUtils
import com.example.ellegadodepintia.soundManager.SoundManager
class InicioMinijuego1 : AppCompatActivity() {
private lateinit var titulo: ImageView
private lateinit var soundManager: SoundManager
override fun onCreate(savedInstanceState: Bundle?) {
soundManager = SoundManager(this)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_iniciominijuego1)
......@@ -23,7 +24,7 @@ class InicioMinijuego1 : AppCompatActivity() {
// Define el comportamiento cuando se hace clic en el botón
startButton.setOnClickListener {
soundManager.playSound(R.raw.sound_button)
// Intent para iniciar una nueva actividad (supongamos que tienes una Activity llamada GameActivity)
val intent = Intent(this, Minijuego1::class.java)
startActivity(intent)
......
......@@ -77,6 +77,7 @@ class Minijuego2 : AppCompatActivity() {
private fun configurarBotonIniciar() {
botonIniciar.setOnClickListener {
soundManager.playSound(R.raw.sound_button)
iniciarJuego()
protagonista.y = (layout.height / 2).toFloat()
fondo2.x = fondo1.x + fondo1.width * 4
......@@ -265,6 +266,7 @@ class Minijuego2 : AppCompatActivity() {
private fun reiniciarJuego() {
// Reiniciar variables del juego
puntuacion = 0
soundManager.playSound(R.raw.sound_button)
velObs = 10f
puntuacionTextView.text = "Puntuación: $puntuacion"
protagonista.y = (layout.height / 2).toFloat() // Reiniciar posición del protagonista
......@@ -288,4 +290,8 @@ class Minijuego2 : AppCompatActivity() {
fondo2.x = fondo1.x + fondo1.width * 4
}
}
override fun onPause() {
super.onPause()
soundManager.stopSound()
}
}
......@@ -20,6 +20,7 @@ import android.graphics.ColorMatrix
import android.graphics.ColorMatrixColorFilter
import com.example.ellegadodepintia.MapActivity
import com.example.ellegadodepintia.R
import com.example.ellegadodepintia.soundManager.SoundManager
class Minijuego3 : AppCompatActivity() {
private lateinit var portadaLayout: LinearLayout
......@@ -27,7 +28,7 @@ class Minijuego3 : AppCompatActivity() {
private lateinit var gridLayout: GridLayout
private lateinit var cronometroTextView: TextView
private lateinit var botonVolver: ImageView;
private lateinit var soundManager: SoundManager
private var botonesCarta = mutableListOf<Button>()
private var cartas = mutableListOf<Carta>()
private var primieraCarta: Carta? = null
......@@ -38,10 +39,13 @@ class Minijuego3 : AppCompatActivity() {
private var tiempoCorriendo = false
override fun onCreate(savedInstanceState: Bundle?) {
soundManager = SoundManager(this)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_minijuego3)
inizializarVistas()
setupBotonStart()
}
private fun inizializarVistas() {
......@@ -55,6 +59,8 @@ class Minijuego3 : AppCompatActivity() {
private fun setupBotonStart() {
botonIniciar.setOnClickListener {
esconderPortada()
soundManager.playSound(R.raw.sound_button)
soundManager.playSoundLoop(R.raw.sound_memory)
iniciarJuego()
}
}
......@@ -104,6 +110,7 @@ class Minijuego3 : AppCompatActivity() {
actualizarContador()
}
override fun onFinish() {
soundManager.stopSound()
mostrarGameOver("¡Has perdido!")
}
}.start()
......@@ -119,6 +126,7 @@ class Minijuego3 : AppCompatActivity() {
private fun cartaClickada(position: Int) {
if (procesandose) return
soundManager.playSound(R.raw.sound_cardflip)
val carta = cartas[position]
val button = botonesCarta[position]
if (carta.isFaceUp || carta.isMatched) return
......@@ -132,6 +140,7 @@ class Minijuego3 : AppCompatActivity() {
procesandose = true
comprobarMatch()
}
}
private fun comprobarMatch() {
......@@ -147,6 +156,7 @@ class Minijuego3 : AppCompatActivity() {
segundaCarta?.let { card ->
val button = botonesCarta[cartas.indexOf(card)]
iluminarCarta(button)}
soundManager.playSound(R.raw.sound_match)
} else {
primieraCarta?.let { card ->
val button = botonesCarta[cartas.indexOf(card)]
......@@ -157,18 +167,22 @@ class Minijuego3 : AppCompatActivity() {
val button = botonesCarta[cartas.indexOf(card)]
card.isFaceUp = false
girarCarta(button, R.drawable.asi_minijuego_3_trasero, isReversing = true)
}
soundManager.playSound(R.raw.sound_cardflip)
}
primieraCarta = null
segundaCarta = null
procesandose = false
comprobarFinJuego()
}, 1000)
}
private fun comprobarFinJuego() {
if (cartas.all { it.isMatched }) {
soundManager.stopSound()
tiempoCorriendo = false
cuentraAtras?.cancel()
mostrarGameOver("¡Has ganado!")
......@@ -233,17 +247,24 @@ class Minijuego3 : AppCompatActivity() {
}
private fun voltearCartas() {
soundManager.playSound(R.raw.sound_cardflip)
botonesCarta.forEachIndexed { index, button ->
val card = cartas[index]
card.isFaceUp = true
girarCarta(button, card.imageResId)
}
Handler(Looper.getMainLooper()).postDelayed({
soundManager.playSound(R.raw.sound_cardflip)
botonesCarta.forEachIndexed { index, button ->
val card = cartas[index]
card.isFaceUp = false
girarCarta(button, R.drawable.asi_minijuego_3_trasero, isReversing = true)
}
}, 2000)
}
override fun onPause() {
super.onPause()
soundManager.stopSound()
}
}
......@@ -5,6 +5,7 @@ import android.media.MediaPlayer
class SoundManager(private val context: Context) {
private var mediaPlayer: MediaPlayer? = null
private var loopMediaPlayer: MediaPlayer? = null // MediaPlayer para sonidos en bucle
// Método para reproducir un sonido
fun playSound(soundResource: Int) {
......@@ -16,25 +17,40 @@ class SoundManager(private val context: Context) {
// Método para reproducir un sonido en bucle
fun playSoundLoop(soundResource: Int) {
// Inicializa un nuevo MediaPlayer con el recurso de sonido
mediaPlayer = MediaPlayer.create(context, soundResource)
mediaPlayer?.apply {
loopMediaPlayer = MediaPlayer.create(context, soundResource)
loopMediaPlayer?.apply {
isLooping = true // Hacer que el sonido se repita en bucle
start() // Comienza la reproducción
}
}
// Método para detener el sonido actual
// Método para detener y liberar todos los sonidos
fun stopSound() {
mediaPlayer?.let {
if (it.isPlaying) {
it.stop()
}
it.reset() // Resetea el MediaPlayer a su estado inicial
it.release() // Libera los recursos del MediaPlayer
}
mediaPlayer = null
loopMediaPlayer?.let {
if (it.isPlaying) {
it.stop()
}
it.reset() // Resetea el MediaPlayer para el bucle
it.release() // Libera los recursos del MediaPlayer
}
loopMediaPlayer = null
}
// Método para liberar recursos cuando ya no se necesiten más
fun release() {
mediaPlayer?.release()
mediaPlayer = null
loopMediaPlayer?.release()
loopMediaPlayer = null
}
}
File added
File added
File added
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment