Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Rafa Castillo Passols
/
peponator
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
64241337
authored
May 15, 2025
by
Rafa Castillo Passols
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Hecho la puntuación algo más compleja
parent
c5ede89b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
34 additions
and
19 deletions
lib/modelo/dificultad.dart
lib/paginas/pantalla_juego.dart
lib/modelo/dificultad.dart
View file @
64241337
...
...
@@ -7,12 +7,7 @@ import 'dart:math';
///
/// Dado un número de intentos, conseguir adivinar un número en una
/// dificultad mayor debería de dar una puntuación mayor.
///
/// La penalización por tener pistas debería de ser mayor cuanto
/// mayor sea la dificultad.
class
Dificultad
{
// TODO: SISTEMA PARA CALCULAR PUNTUACIÓN. Pensar en log2(limite)
final
int
_limite
;
final
int
_maxIntentos
;
final
String
_nombre
;
...
...
@@ -58,7 +53,17 @@ class Dificultad {
);
int
generarNumero
()
=>
Random
().
nextInt
(
limite
)
+
1
;
int
generarPuntuacion
(
int
intentos
)
=>
(
maxIntentos
-
intentos
)*
100
;
int
generarPuntuacion
(
int
intentos
)
{
// Si adivinas en menos de estos intentos es suerte
final
intentosMinimos
=
log
(
limite
)
/
log
(
2
);
// log2(limite)
// Cuanto más difícil más puntos
final
coeficienteDificultad
=
(
intentosMinimos
+
2
)/
_maxIntentos
;
// En cuantos menos uses intentos mejor
final
coeficienteResultado
=
(
_maxIntentos
+
intentosMinimos
+
3
)
/
(
_maxIntentos
+
intentos
);
final
resultado
=
coeficienteDificultad
*
coeficienteResultado
*
10
;
// Para que el resultado acabe siempre en 0
return
resultado
.
round
()*
10
;
}
factory
Dificultad
.
copia
(
Dificultad
otro
)
{
return
Dificultad
(
...
...
@@ -67,6 +72,7 @@ class Dificultad {
nombre:
otro
.
nombre
);
}
@override
bool
operator
==(
Object
other
)
{
if
(
other
is
!
Dificultad
)
{
...
...
lib/paginas/pantalla_juego.dart
View file @
64241337
...
...
@@ -141,15 +141,19 @@ class _PantallaJuegoState extends State<PantallaJuego>
jugador
=
""
;
}
void
_cambiarDificultadPausa
()
async
{
Dificultad
prev
=
Dificultad
.
copia
(
dificultad
);
Dificultad
?
nueva
=
await
Future
<
Dificultad
?>
_cambiarDificultad
()
async
{
return
await
Navigator
.
push
<
Dificultad
>(
context
,
MaterialPageRoute
(
builder:
(
BuildContext
context
)
=>
PantallaDificultad
()
)
context
,
MaterialPageRoute
(
builder:
(
BuildContext
context
)
=>
PantallaDificultad
()
)
);
}
void
_cambiarDificultadPausa
()
async
{
Dificultad
prev
=
Dificultad
.
copia
(
dificultad
);
Dificultad
?
nueva
=
await
_cambiarDificultad
();
if
(
nueva
!=
null
&&
prev
!=
nueva
)
{
setState
(()
{
dificultad
=
nueva
;
...
...
@@ -158,6 +162,13 @@ class _PantallaJuegoState extends State<PantallaJuego>
}
}
void
_cambiarDificultadFin
()
async
{
Dificultad
?
nueva
=
await
_cambiarDificultad
();
if
(
nueva
!=
null
)
{
dificultad
=
nueva
;
}
}
@override
void
dispose
()
{
textController
.
dispose
();
...
...
@@ -847,8 +858,7 @@ class _PantallaJuegoState extends State<PantallaJuego>
};
break
;
case
OpcionesFinPartida
.
cambiarDificultad
:
// TODO: Handle this case.
onPressed
=
()
{
};
onPressed
=
_cambiarDificultadFin
;
break
;
case
OpcionesFinPartida
.
salir
:
// TODO: Handle this case.
...
...
@@ -997,7 +1007,7 @@ class _PantallaJuegoState extends State<PantallaJuego>
void
_escribirRespuesta
()
async
{
await
Future
.
delayed
(
Duration
(
milliseconds:
600
));
setState
(()
{
// TODO: Construir respuesta de Peponator
if
(
numeroEscogido
!
<
numeroAdivinar
){
limiteInferior
=
numeroEscogido
!
+
1
;
_updateMaximum
=
false
;
...
...
@@ -1008,9 +1018,7 @@ class _PantallaJuegoState extends State<PantallaJuego>
}
if
(
numeroEscogido
!
==
numeroAdivinar
){
victoria
=
true
;
// TODO: Calcular puntuación
puntuacion
=
1500
;
puntuacion
=
dificultad
.
generarPuntuacion
(
intentos
);
if
(
records
!=
null
){
posicion
=
records
!.
length
;
...
...
@@ -1020,6 +1028,7 @@ class _PantallaJuegoState extends State<PantallaJuego>
}
}
// TODO: Construir respuesta de Peponator
mensajes
.
add
(
PeponatorMensaje
(
message:
"¡Hola! Estoy pensando en un número del
$limiteInferior
al
$limiteSuperior
. ¿Te crees capaz de adivinarlo?"
));
numeroEscogido
=
null
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment