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
a2213ba5
authored
May 15, 2025
by
Rafa Castillo Passols
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Añadida las pistas al sistema de puntuación y limpiado con dart fix
parent
ae36ff73
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
34 additions
and
31 deletions
lib/modelo/dificultad.dart
lib/paginas/pantalla_juego.dart
lib/paginas/pantalla_records.dart
lib/peponator_app.dart
lib/widgets/peponator_mensaje_factory.dart
lib/modelo/dificultad.dart
View file @
a2213ba5
...
...
@@ -53,16 +53,19 @@ class Dificultad {
);
int
generarNumero
()
=>
Random
().
nextInt
(
limite
)
+
1
;
int
generarPuntuacion
(
int
intentos
)
{
// Si adivinas en menos de estos intentos es suerte
final
intentosMinimos
=
log
(
limite
)
/
log
(
2
);
// log2(limite)
int
generarPuntuacion
(
int
intentos
,
int
pistas
)
{
// Cuanto más difícil más puntos
final
intentosMinimos
=
log
(
limite
)
/
log
(
2
);
// log2(limite)
final
coeficienteDificultad
=
(
intentosMinimos
+
2
)/
_maxIntentos
;
// En cuantos menos uses intentos mejor
// En cuantos menos 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
;
// Cuantas menos pistas mejor
final
coeficientePistas
=
pistas
==
0
?
1.25
:
1
-(
pistas
*
0.1
);
final
resultado
=
coeficienteDificultad
*
coeficienteResultado
*
coeficientePistas
*
10
;
return
resultado
.
round
()*
10
;
// Para que el resultado acabe siempre en 0
}
factory
Dificultad
.
copia
(
Dificultad
otro
)
{
...
...
lib/paginas/pantalla_juego.dart
View file @
a2213ba5
...
...
@@ -8,11 +8,7 @@ import 'package:peponator/modelo/listaDificultad.dart';
import
'package:peponator/modelo/peponator_record.dart'
;
import
'package:peponator/modelo/pista.dart'
;
import
'package:peponator/paginas/paginas.dart'
;
import
'package:peponator/widgets/pantalla_pausa.dart'
;
import
'package:peponator/widgets/peponator_mensaje.dart'
;
import
'package:peponator/widgets/teclado_numerico.dart'
;
import
'package:peponator/widgets/tu_mensaje.dart'
;
import
'package:peponator/widgets/widgets.dart'
;
import
'package:provider/provider.dart'
;
import
'package:shared_preferences/shared_preferences.dart'
;
...
...
@@ -1007,8 +1003,12 @@ class _PantallaJuegoState extends State<PantallaJuego>
void
_escribirRespuesta
()
async
{
await
Future
.
delayed
(
Duration
(
milliseconds:
600
));
setState
(()
{
if
(
numeroEscogido
!
<
numeroAdivinar
){
intentos
++;
if
(
intentos
==
maxIntentos
)
{
mensajes
.
add
(
PeponetorMensajeFactory
.
derrota
());
}
else
if
(
numeroEscogido
!
<
numeroAdivinar
){
mensajes
.
add
(
PeponetorMensajeFactory
.
respuesta
(
numeroEscogido
!,
numeroAdivinar
));
limiteInferior
=
numeroEscogido
!
+
1
;
_updateMaximum
=
false
;
...
...
@@ -1019,9 +1019,16 @@ class _PantallaJuegoState extends State<PantallaJuego>
_updateMaximum
=
true
;
}
else
{
mensajes
.
add
(
PeponetorMensajeFactory
.
victoria
(
intentos
));
victoria
=
true
;
puntuacion
=
dificultad
.
generarPuntuacion
(
intentos
);
int
numPistasUsadas
=
0
;
for
(
Pista
pista
in
pistas
)
{
if
(
pista
.
estado
.
desbloqueada
())
{
++
numPistasUsadas
;
}
}
mensajes
.
add
(
PeponetorMensajeFactory
.
victoria
(
intentos
,
numPistasUsadas
));
puntuacion
=
dificultad
.
generarPuntuacion
(
intentos
,
numPistasUsadas
);
if
(
records
!=
null
){
posicion
=
records
!.
length
;
...
...
@@ -1031,11 +1038,6 @@ class _PantallaJuegoState extends State<PantallaJuego>
}
}
intentos
++;
if
(
intentos
==
maxIntentos
)
{
mensajes
.
add
(
PeponetorMensajeFactory
.
derrota
());
}
numeroEscogido
=
null
;
espera
=
false
;
...
...
@@ -1060,7 +1062,7 @@ class _PantallaJuegoState extends State<PantallaJuego>
for
(
var
prodJson
in
recordsJson
)
{
lista
.
add
(
PeponatorRecord
.
desdeJson
(
prodJson
));
}
}
on
FileSystemException
catch
(
e
)
{
}
on
FileSystemException
{
lista
.
clear
();
}
finally
{
...
...
lib/paginas/pantalla_records.dart
View file @
a2213ba5
...
...
@@ -307,12 +307,11 @@ class _PantallaRecordsState extends State<PantallaRecords> {
try
{
final
productosString
=
await
file
.
readAsString
();
print
(
productosString
);
final
List
<
dynamic
>
recordsJson
=
jsonDecode
(
productosString
);
for
(
var
prodJson
in
recordsJson
)
{
lista
.
add
(
PeponatorRecord
.
desdeJson
(
prodJson
));
}
}
on
FileSystemException
catch
(
e
)
{
}
on
FileSystemException
{
lista
.
clear
();
}
...
...
lib/peponator_app.dart
View file @
a2213ba5
import
'package:flutter/material.dart'
;
import
'package:peponator/modelo/dificultad.dart'
;
import
'package:peponator/modelo/listaDificultad.dart'
;
import
'package:provider/provider.dart'
;
import
'package:peponator/paginas/paginas.dart'
;
import
'package:peponator/paginas/pantalla_dificultad.dart'
;
import
'package:peponator/paginas/pantalla_juego.dart'
;
class
PeponatorApp
extends
StatelessWidget
{
const
PeponatorApp
({
super
.
key
});
@override
Widget
build
(
BuildContext
context
)
{
// TODO: Escribir en preferencias los ajustes por defecto (presumo el modo Fácil)
return
MultiProvider
(
providers:
[
ChangeNotifierProvider
(
create:
(
context
)
=>
ListaDificultad
()),
...
...
lib/widgets/peponator_mensaje_factory.dart
View file @
a2213ba5
...
...
@@ -16,10 +16,13 @@ abstract class PeponetorMensajeFactory {
return
PeponatorMensaje
(
message:
sb
.
toString
());
}
static
PeponatorMensaje
victoria
(
int
numIntentos
)
{
return
PeponatorMensaje
(
message:
"Felicidades! Lo has conseguido en
$numIntentos
intentos"
);
static
PeponatorMensaje
victoria
(
int
numIntentos
,
int
numPistas
)
{
String
s1
=
numIntentos
>
1
?
"s"
:
""
;
String
s2
=
numPistas
>
1
?
"s"
:
""
;
StringBuffer
sb
=
StringBuffer
(
"Felicidades! Lo has conseguido en
$numIntentos
intento
$s1
"
);
sb
.
write
(
numPistas
==
0
?
"y sin pistas!"
:
"usando
$numPistas
pistas
$s2
"
);
return
PeponatorMensaje
(
message:
sb
.
toString
());
}
static
PeponatorMensaje
derrota
()
{
...
...
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