Arreglado el bug y añadido comparación a Dificultad

parent 5125893e
...@@ -19,6 +19,7 @@ class Dificultad { ...@@ -19,6 +19,7 @@ class Dificultad {
const Dificultad({required limite, required maxIntentos, required nombre}): const Dificultad({required limite, required maxIntentos, required nombre}):
_limite = limite, _maxIntentos = maxIntentos, _nombre = nombre; _limite = limite, _maxIntentos = maxIntentos, _nombre = nombre;
int get limite => _limite; int get limite => _limite;
int get maxIntentos => _maxIntentos; int get maxIntentos => _maxIntentos;
String get nombre => _nombre; String get nombre => _nombre;
...@@ -58,4 +59,19 @@ class Dificultad { ...@@ -58,4 +59,19 @@ class Dificultad {
int generarNumero() => Random().nextInt(limite) + 1; int generarNumero() => Random().nextInt(limite) + 1;
int generarPuntuacion(int intentos) => (maxIntentos-intentos)*100; int generarPuntuacion(int intentos) => (maxIntentos-intentos)*100;
factory Dificultad.copia(Dificultad otro) {
return Dificultad(
limite: otro.limite,
maxIntentos: otro.maxIntentos,
nombre: otro.nombre
);
}
@override
bool operator ==(Object other) {
if (other is! Dificultad) {
return false;
}
return (limite == other.limite) && (maxIntentos == other.maxIntentos);
}
} }
\ No newline at end of file
...@@ -60,6 +60,7 @@ class _PantallaJuegoState extends State<PantallaJuego> ...@@ -60,6 +60,7 @@ class _PantallaJuegoState extends State<PantallaJuego>
late bool error; late bool error;
late bool espera; late bool espera;
late bool victoria; late bool victoria;
bool partidaEmpezada = false;
late int puntuacion; late int puntuacion;
late int posicion; late int posicion;
...@@ -141,17 +142,17 @@ class _PantallaJuegoState extends State<PantallaJuego> ...@@ -141,17 +142,17 @@ class _PantallaJuegoState extends State<PantallaJuego>
} }
void _cambiarDificultadPausa() async { void _cambiarDificultadPausa() async {
Dificultad? nuevaDificultad = await Dificultad prev = Dificultad.copia(dificultad);
Dificultad? nueva = await
Navigator.push<Dificultad>( Navigator.push<Dificultad>(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (BuildContext context) => PantallaDificultad() builder: (BuildContext context) => PantallaDificultad()
) )
); );
if (nueva != null && prev != nueva) {
if (nuevaDificultad != null && dificultad != nuevaDificultad) {
setState(() { setState(() {
dificultad = nuevaDificultad; dificultad = nueva;
_nuevaPartida(); _nuevaPartida();
}); });
} }
...@@ -166,7 +167,10 @@ class _PantallaJuegoState extends State<PantallaJuego> ...@@ -166,7 +167,10 @@ class _PantallaJuegoState extends State<PantallaJuego>
Widget _buildPaginaJuego(BuildContext context, Orientation orientation) { Widget _buildPaginaJuego(BuildContext context, Orientation orientation) {
dificultad = context.read<ListaDificultad>().seleccionada; dificultad = context.read<ListaDificultad>().seleccionada;
_nuevaPartida(); if (!partidaEmpezada) {
_nuevaPartida();
partidaEmpezada = true;
}
return SafeArea( return SafeArea(
child: Stack( child: Stack(
children: [ children: [
...@@ -837,7 +841,9 @@ class _PantallaJuegoState extends State<PantallaJuego> ...@@ -837,7 +841,9 @@ class _PantallaJuegoState extends State<PantallaJuego>
switch(element){ switch(element){
case OpcionesFinPartida.repetir: case OpcionesFinPartida.repetir:
onPressed = () { onPressed = () {
_nuevaPartida(); setState(() {
_nuevaPartida();
});();
}; };
break; break;
case OpcionesFinPartida.cambiarDificultad: case OpcionesFinPartida.cambiarDificultad:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment