Merge pull request 'Arthur_BowlingAlgo' (#23) from Arthur_BowlingAlgo into master
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
Reviewed-on: #23pull/25/head
commit
824e8efc9d
@ -0,0 +1,85 @@
|
|||||||
|
import 'Player.dart';
|
||||||
|
|
||||||
|
abstract class AbstractRound {
|
||||||
|
int? _firstThrow;
|
||||||
|
int? _secondThrow;
|
||||||
|
int? _points;
|
||||||
|
int _number;
|
||||||
|
Player _player;
|
||||||
|
|
||||||
|
AbstractRound? _previousRound;
|
||||||
|
|
||||||
|
// Constructor
|
||||||
|
AbstractRound(this._firstThrow, this._secondThrow, this._points, this._player, this._number);
|
||||||
|
|
||||||
|
// Getters and setters
|
||||||
|
int? get firstThrow => _firstThrow;
|
||||||
|
|
||||||
|
set firstThrow(int? value) {
|
||||||
|
_firstThrow = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
int? get secondThrow => _secondThrow;
|
||||||
|
|
||||||
|
set secondThrow(int? value) {
|
||||||
|
_secondThrow = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
int? get points => _points;
|
||||||
|
|
||||||
|
set points(int? value) {
|
||||||
|
_points = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int get number => _number;
|
||||||
|
|
||||||
|
set number(int value) {
|
||||||
|
_number = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player get player => _player;
|
||||||
|
|
||||||
|
set player(Player value) {
|
||||||
|
_player = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
AbstractRound? get previousRound => _previousRound;
|
||||||
|
|
||||||
|
set previousRound(AbstractRound? value) {
|
||||||
|
_previousRound = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool computeNext(int val);
|
||||||
|
void computePoints();
|
||||||
|
bool shotIsStrike();
|
||||||
|
|
||||||
|
bool isStrike() {
|
||||||
|
return firstThrow==10;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isSpare(){
|
||||||
|
return firstThrow!=10 && (firstThrow ?? 0)+(secondThrow ?? 0)==10;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isSpareOrStrike() {
|
||||||
|
return (firstThrow ?? 0)+(secondThrow ?? 0)==10;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void subscribe(AbstractRound nextRound){
|
||||||
|
nextRound.previousRound=this;
|
||||||
|
}
|
||||||
|
|
||||||
|
void update(int val){
|
||||||
|
points = (points ?? 0) + val;
|
||||||
|
print("ROUND " + number.toString() + " - " + player.id.toString() + "Update points : " + points.toString());
|
||||||
|
previousRound?.update(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
void unsubscribePreviousRound(){
|
||||||
|
previousRound?.unsubscribePreviousRound();
|
||||||
|
previousRound=null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
|
||||||
|
import 'GameDetail.dart';
|
||||||
|
import 'package:go_router/go_router.dart';
|
||||||
|
|
||||||
|
import 'Round.dart';
|
||||||
|
|
||||||
|
class GamePlayer {
|
||||||
|
late GameDetail _game;
|
||||||
|
int currentRoundIndex = 0;
|
||||||
|
|
||||||
|
GameDetail get game => _game;
|
||||||
|
|
||||||
|
set game(GameDetail value) {
|
||||||
|
currentRoundIndex = 0;
|
||||||
|
_game = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void onNext(bool isRoundFinished, BuildContext context) {
|
||||||
|
if (isRoundFinished) {
|
||||||
|
print("++");
|
||||||
|
currentRoundIndex++;
|
||||||
|
}
|
||||||
|
if (currentRoundIndex >= game.rounds.length) {
|
||||||
|
print("FINISHED");
|
||||||
|
game.computeScores();
|
||||||
|
context.go("/scoreboard", extra: game);
|
||||||
|
} else {
|
||||||
|
print("IN GAME : " + currentRoundIndex.toString());
|
||||||
|
if (game.rounds[currentRoundIndex] is Round) {
|
||||||
|
print("ROUND");
|
||||||
|
} else {
|
||||||
|
print("LAST ROUND");
|
||||||
|
}
|
||||||
|
context.pushReplacement("/in-game",
|
||||||
|
extra: game.rounds[currentRoundIndex]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void onSpareOrStrike() {
|
||||||
|
if (currentRoundIndex < game.rounds.length - game.players.length) {
|
||||||
|
print("ON SPAREORSTRIKE");
|
||||||
|
game.rounds[currentRoundIndex]
|
||||||
|
.subscribe(game.rounds[currentRoundIndex + game.players.length]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
import 'package:bowl_in/model/AbstractRound.dart';
|
||||||
|
|
||||||
|
import 'Player.dart';
|
||||||
|
|
||||||
|
class LastRound extends AbstractRound{
|
||||||
|
int? _thirdThrow;
|
||||||
|
|
||||||
|
LastRound(super.firstThrow, super.secondThrow, super.points, super.player, super.number, this._thirdThrow);
|
||||||
|
|
||||||
|
int? get thirdThrow => _thirdThrow;
|
||||||
|
|
||||||
|
set thirdThrow(int? value) {
|
||||||
|
_thirdThrow = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool computeNext(int val) {
|
||||||
|
if(firstThrow==null){
|
||||||
|
firstThrow=val;
|
||||||
|
if(previousRound?.isSpare() ?? false){
|
||||||
|
previousRound?.update(val);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}else if(secondThrow==null){
|
||||||
|
secondThrow=val;
|
||||||
|
if ((firstThrow??0)+(secondThrow??0)<10){
|
||||||
|
computePoints();
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}else if((firstThrow??0)+(secondThrow??0)>=10){
|
||||||
|
thirdThrow=val;
|
||||||
|
}
|
||||||
|
computePoints();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void computePoints() {
|
||||||
|
points = (firstThrow??0)+(secondThrow??0)+(thirdThrow??0);
|
||||||
|
|
||||||
|
if(previousRound?.isStrike()??false){
|
||||||
|
update(points??0);
|
||||||
|
}
|
||||||
|
unsubscribePreviousRound();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool shotIsStrike(){
|
||||||
|
if(firstThrow==null){
|
||||||
|
return true;
|
||||||
|
}else if(secondThrow==null){
|
||||||
|
return firstThrow==10;
|
||||||
|
}else{
|
||||||
|
return secondThrow==10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,36 +1,44 @@
|
|||||||
import 'Player.dart';
|
import 'package:bowl_in/model/AbstractRound.dart';
|
||||||
|
import 'GamePlayer.dart';
|
||||||
class Round {
|
|
||||||
int _firstThrow;
|
class Round extends AbstractRound{
|
||||||
int? _secondThrow;
|
|
||||||
int _points;
|
Round(super.firstThrow, super.secondThrow, super.points, super.player, super.number);
|
||||||
Player _player;
|
|
||||||
|
@override
|
||||||
// Constructor
|
bool computeNext(int val) {
|
||||||
Round(this._firstThrow, this._secondThrow, this._points, this._player);
|
if(firstThrow==null){
|
||||||
|
firstThrow=val;
|
||||||
// Getters and setters
|
if(previousRound?.isSpare() ?? false){
|
||||||
int get firstThrow => _firstThrow;
|
previousRound?.update(val);
|
||||||
|
unsubscribePreviousRound();
|
||||||
set firstThrow(int value) {
|
}
|
||||||
_firstThrow = value;
|
if(val==10){
|
||||||
|
computePoints();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}else if(firstThrow!=10 && secondThrow==null){
|
||||||
|
secondThrow=val;
|
||||||
|
}
|
||||||
|
computePoints();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int? get secondThrow => _secondThrow;
|
@override
|
||||||
|
void computePoints() {
|
||||||
set secondThrow(int? value) {
|
points = (firstThrow ?? 0)+(secondThrow ?? 0);
|
||||||
_secondThrow = value;
|
print("ROUND " + number.toString() + " - " + player.id.toString() + "Compute points : " + points.toString());
|
||||||
|
if(previousRound?.isStrike() ?? false){
|
||||||
|
previousRound?.update(points ?? 0);
|
||||||
|
}
|
||||||
|
unsubscribePreviousRound();
|
||||||
}
|
}
|
||||||
|
|
||||||
int get points => _points;
|
@override
|
||||||
|
bool shotIsStrike(){
|
||||||
set points(int value) {
|
return firstThrow==null;
|
||||||
_points = value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Player get player => _player;
|
|
||||||
|
|
||||||
set player(Player value) {
|
|
||||||
_player = value;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,110 @@
|
|||||||
|
import 'package:bowl_in/main.dart';
|
||||||
|
import 'package:bowl_in/model/AbstractRound.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
|
|
||||||
|
import '../model/Round.dart';
|
||||||
|
import '../widgets/button_new_party.dart';
|
||||||
|
import '../widgets/ingame_widgets.dart';
|
||||||
|
import '../widgets/scores_list_widget.dart';
|
||||||
|
|
||||||
|
class InGameScreen2 extends StatefulWidget {
|
||||||
|
final AbstractRound currentRound;
|
||||||
|
const InGameScreen2({Key? key, required this.currentRound}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<InGameScreen2> createState() => _InGameScreen2State();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _InGameScreen2State extends State<InGameScreen2> {
|
||||||
|
late InGameCardThrow widgetHolder;
|
||||||
|
int selectedValue = 0;
|
||||||
|
void setSelectedValue(int val) {
|
||||||
|
selectedValue = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
void initState() {
|
||||||
|
if (widget.currentRound.firstThrow == null) {
|
||||||
|
widgetHolder = InGameCardThrow(
|
||||||
|
numberThrow: 1,
|
||||||
|
currentRound: widget.currentRound,
|
||||||
|
setSelectedValue: setSelectedValue);
|
||||||
|
} else if (widget.currentRound.secondThrow == null) {
|
||||||
|
widgetHolder = InGameCardThrow(
|
||||||
|
numberThrow: 2,
|
||||||
|
currentRound: widget.currentRound,
|
||||||
|
setSelectedValue: setSelectedValue);
|
||||||
|
} else {
|
||||||
|
widgetHolder = InGameCardThrow(
|
||||||
|
numberThrow: 3,
|
||||||
|
currentRound: widget.currentRound,
|
||||||
|
setSelectedValue: setSelectedValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Stack(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: MediaQuery.of(context).size.width,
|
||||||
|
height: MediaQuery.of(context).size.height,
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
gradient: LinearGradient(
|
||||||
|
begin: Alignment.topLeft,
|
||||||
|
end: Alignment.bottomRight,
|
||||||
|
colors: [
|
||||||
|
Color(0xff19BDE0),
|
||||||
|
Color(0xff4A17DC),
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 120,
|
||||||
|
),
|
||||||
|
widgetHolder,
|
||||||
|
Spacer(),
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed: () {
|
||||||
|
bool isFinished =
|
||||||
|
widget.currentRound.computeNext(selectedValue);
|
||||||
|
|
||||||
|
if (widget.currentRound.isSpareOrStrike()) {
|
||||||
|
MyApp.controller.gamePlayer.onSpareOrStrike();
|
||||||
|
}
|
||||||
|
|
||||||
|
MyApp.controller.gamePlayer.onNext(isFinished, context);
|
||||||
|
},
|
||||||
|
child: Text(
|
||||||
|
"PLAY",
|
||||||
|
style: GoogleFonts.roboto(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontSize: 40,
|
||||||
|
color: Color(0xff1ABAE0)),
|
||||||
|
),
|
||||||
|
style: ElevatedButton.styleFrom(
|
||||||
|
side: BorderSide(
|
||||||
|
width: 7,
|
||||||
|
color: Color(0xff1ABAE0),
|
||||||
|
),
|
||||||
|
onPrimary: Colors.transparent,
|
||||||
|
primary: Colors.transparent,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(55),
|
||||||
|
),
|
||||||
|
minimumSize: Size(200, 80),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Spacer(),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -1,274 +1,278 @@
|
|||||||
import '../lib/model/Player.dart';
|
// import 'package:bowl_in/model/GamePlayer.dart';
|
||||||
import '../lib/model/Guest.dart';
|
//
|
||||||
import '../lib/model/User.dart';
|
// import '../lib/model/Player.dart';
|
||||||
import '../lib/model/Stat.dart';
|
// import '../lib/model/Guest.dart';
|
||||||
import '../lib/model/Round.dart';
|
// import '../lib/model/User.dart';
|
||||||
import '../lib/model/GameDetail.dart';
|
// import '../lib/model/Stat.dart';
|
||||||
import '../lib/model/StubManager/StubData.dart';
|
// import '../lib/model/Round.dart';
|
||||||
import '../lib/model/IManager.dart';
|
// import '../lib/model/GameDetail.dart';
|
||||||
import 'dart:math';
|
// import '../lib/model/StubManager/StubData.dart';
|
||||||
import '../lib/model/Achievement.dart';
|
// import '../lib/model/IManager.dart';
|
||||||
|
// import 'dart:math';
|
||||||
void main() {
|
// import '../lib/model/Achievement.dart';
|
||||||
List<Stat> stats = [];
|
//
|
||||||
Random random = Random();
|
// void main() {
|
||||||
|
// List<Stat> stats = [];
|
||||||
for (int i = 0; i < 10; i++) {
|
// Random random = Random();
|
||||||
Stat stat = Stat(
|
//
|
||||||
random.nextInt(50) + 1, // valeur aléatoire entre 1 et 50
|
// for (int i = 0; i < 10; i++) {
|
||||||
random.nextInt(20) + 1, // valeur aléatoire entre 1 et 20
|
// Stat stat = Stat(
|
||||||
random.nextInt(30) + 1, // valeur aléatoire entre 1 et 30
|
// random.nextInt(50) + 1, // valeur aléatoire entre 1 et 50
|
||||||
random.nextInt(1000) + 1, // valeur aléatoire entre 1 et 1000
|
// random.nextInt(20) + 1, // valeur aléatoire entre 1 et 20
|
||||||
random.nextInt(10) + 1, // valeur aléatoire entre 1 et 10
|
// random.nextInt(30) + 1, // valeur aléatoire entre 1 et 30
|
||||||
random.nextInt(5) + 1, // valeur aléatoire entre 1 et 5
|
// random.nextInt(1000) + 1, // valeur aléatoire entre 1 et 1000
|
||||||
random.nextInt(5000) + 1000, // valeur aléatoire entre 1000 et 6000
|
// random.nextInt(10) + 1, // valeur aléatoire entre 1 et 10
|
||||||
random.nextInt(300) + 1, // valeur aléatoire entre 1 et 300
|
// random.nextInt(5) + 1, // valeur aléatoire entre 1 et 5
|
||||||
random.nextDouble() * 10 // valeur aléatoire entre 0 et 10
|
// random.nextInt(5000) + 1000, // valeur aléatoire entre 1000 et 6000
|
||||||
);
|
// random.nextInt(300) + 1, // valeur aléatoire entre 1 et 300
|
||||||
stats.add(stat);
|
// random.nextDouble() * 10 // valeur aléatoire entre 0 et 10
|
||||||
}
|
// );
|
||||||
|
// stats.add(stat);
|
||||||
print("Stats:");
|
// }
|
||||||
for (var stat in stats) {
|
//
|
||||||
print(
|
// print("Stats:");
|
||||||
"\tVictoires: ${stat.nbVictory}, Défaites: ${stat.nbDefeat}, Parties jouées: ${stat.nbGames}, Meilleur score: ${stat.highscore}, Nombre de strikes: ${stat.nbStrikes}, Nom de spares: ${stat.nbStrikes}, Moyenne score: ${stat.avgScore}, Moyenne score par round: ${stat.avgPinsPerRound}");
|
// for (var stat in stats) {
|
||||||
}
|
// print(
|
||||||
|
// "\tVictoires: ${stat.nbVictory}, Défaites: ${stat.nbDefeat}, Parties jouées: ${stat.nbGames}, Meilleur score: ${stat.highscore}, Nombre de strikes: ${stat.nbStrikes}, Nom de spares: ${stat.nbStrikes}, Moyenne score: ${stat.avgScore}, Moyenne score par round: ${stat.avgPinsPerRound}");
|
||||||
User ami = User(
|
// }
|
||||||
5,
|
//
|
||||||
"Lucas",
|
// User ami = User(
|
||||||
"https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY",
|
// 5,
|
||||||
"Lucas.delanier@etu.uca.fr",
|
// "Lucas",
|
||||||
[],
|
// "https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY",
|
||||||
[],
|
// "Lucas.delanier@etu.uca.fr",
|
||||||
stats[1]);
|
// [],
|
||||||
|
// [],
|
||||||
List<Player> players = [
|
// stats[1]);
|
||||||
Player(1, "Rami",
|
//
|
||||||
"https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4"),
|
// List<Player> players = [
|
||||||
Player(2, "Emre",
|
// Player(1, "Rami",
|
||||||
"https://fastly.picsum.photos/id/670/2000/2000.jpg?hmac=zWqTr_vDEab3dBtp7JZgJP8TRCPNanJ4tYwDDd-jGYA"),
|
// "https://fastly.picsum.photos/id/1060/2000/2000.jpg?hmac=_RrU8GpkCDUlVKfgyWE-GcX-GS5TKNyUzdFbJAGXHV4"),
|
||||||
Guest(3, "Bot1",
|
// Player(2, "Emre",
|
||||||
"https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4"),
|
// "https://fastly.picsum.photos/id/670/2000/2000.jpg?hmac=zWqTr_vDEab3dBtp7JZgJP8TRCPNanJ4tYwDDd-jGYA"),
|
||||||
Guest(4, "Bot2",
|
// Guest(3, "Bot1",
|
||||||
"https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY"),
|
// "https://fastly.picsum.photos/id/820/2000/2000.jpg?hmac=Ctxx2feJNZnG1S7UPx_YrWcEw89tKb7fR8i1W-VTOz4"),
|
||||||
ami,
|
// Guest(4, "Bot2",
|
||||||
User(
|
// "https://fastly.picsum.photos/id/288/2000/2000.jpg?hmac=AUboE-jzAzofYj_O3w_EqtZU3JHzcg7HR1IQd1Ce7lY"),
|
||||||
6,
|
// ami,
|
||||||
"Louison",
|
// User(
|
||||||
"https://fastly.picsum.photos/id/1029/2000/2000.jpg?hmac=_K3pMobVk00dfNR7rsj1NLnEBB5Gf88SvGPbbjoH-Uc",
|
// 6,
|
||||||
"louison.parant@etu.uca.fr",
|
// "Louison",
|
||||||
[
|
// "https://fastly.picsum.photos/id/1029/2000/2000.jpg?hmac=_K3pMobVk00dfNR7rsj1NLnEBB5Gf88SvGPbbjoH-Uc",
|
||||||
Achievement("5 games"),
|
// "louison.parant@etu.uca.fr",
|
||||||
Achievement("2 strikes in a row"),
|
// [
|
||||||
Achievement("Win a game")
|
// Achievement("5 games"),
|
||||||
],
|
// Achievement("2 strikes in a row"),
|
||||||
[ami],
|
// Achievement("Win a game")
|
||||||
stats[0])
|
// ],
|
||||||
];
|
// [ami],
|
||||||
|
// stats[0])
|
||||||
print("Players :");
|
// ];
|
||||||
// afficahge de toutes les informations de tous les joueurs
|
//
|
||||||
for (var player in players) {
|
// print("Players :");
|
||||||
displayPlayer(player,1);
|
// // afficahge de toutes les informations de tous les joueurs
|
||||||
}
|
// for (var player in players) {
|
||||||
|
// displayPlayer(player,1);
|
||||||
//GameDetail
|
// }
|
||||||
|
//
|
||||||
List<GameDetail> games = [
|
// //GameDetail
|
||||||
GameDetail(
|
//
|
||||||
1, DateTime.now(), players[0].id, 290, true, null, players[0].id, [
|
//
|
||||||
Round(10, null, 10, players[0]),
|
// List<GameDetail> games = [];
|
||||||
Round(5, 2, 7, players[1]),
|
// games.add(GameDetail(
|
||||||
Round(5, 1, 12, players[0]),
|
// 1, DateTime.now(), players[0].id, 290, true, null, players[0].id)
|
||||||
Round(5, 2, 7, players[1]),
|
// , [
|
||||||
], [
|
// Round(10, null, 10, players[0], ),
|
||||||
players[0],
|
// Round(5, 2, 7, players[1]),
|
||||||
players[1]
|
// Round(5, 1, 12, players[0]),
|
||||||
]),
|
// Round(5, 2, 7, players[1]),
|
||||||
GameDetail(2, DateTime.now().subtract(Duration(days: 2)),
|
// ], [
|
||||||
players[1].id, 250, true, null, players[1].id, [
|
// players[0],
|
||||||
Round(7, null, 7, players[1]),
|
// players[1]
|
||||||
Round(3, 3, 9, players[0]),
|
// ]),
|
||||||
Round(5, 2, 7, players[1]),
|
// GameDetail(2, DateTime.now().subtract(Duration(days: 2)),
|
||||||
Round(5, 1, 12, players[0])
|
// players[1].id, 250, true, null, players[1].id, [
|
||||||
], [
|
// Round(7, null, 7, players[1]),
|
||||||
players[0],
|
// Round(3, 3, 9, players[0]),
|
||||||
players[1]
|
// Round(5, 2, 7, players[1]),
|
||||||
]),
|
// Round(5, 1, 12, players[0])
|
||||||
GameDetail(3, DateTime.now().subtract(Duration(days: 4)),
|
// ], [
|
||||||
players[2].id, 210, false, null, players[2].id, [
|
// players[0],
|
||||||
Round(8, 2, 10, players[2]),
|
// players[1]
|
||||||
Round(6, 2, 8, players[1]),
|
// ]),
|
||||||
Round(4, 2, 6, players[2]),
|
// GameDetail(3, DateTime.now().subtract(Duration(days: 4)),
|
||||||
Round(2, 2, 4, players[1])
|
// players[2].id, 210, false, null, players[2].id, [
|
||||||
], [
|
// Round(8, 2, 10, players[2]),
|
||||||
players[1],
|
// Round(6, 2, 8, players[1]),
|
||||||
players[2]
|
// Round(4, 2, 6, players[2]),
|
||||||
]),
|
// Round(2, 2, 4, players[1])
|
||||||
GameDetail(
|
// ], [
|
||||||
4,
|
// players[1],
|
||||||
DateTime.now().subtract(Duration(days: 7)),
|
// players[2]
|
||||||
players[3].id,
|
// ]),
|
||||||
120,
|
// GameDetail(
|
||||||
true,
|
// 4,
|
||||||
Round(12, null, 12, players[3]),
|
// DateTime.now().subtract(Duration(days: 7)),
|
||||||
players[3].id, [
|
// players[3].id,
|
||||||
Round(12, null, 12, players[3]),
|
// 120,
|
||||||
Round(7, 3, 10, players[2]),
|
// true,
|
||||||
Round(6, 2, 8, players[1]),
|
// Round(12, null, 12, players[3]),
|
||||||
Round(5, 1, 12, players[0])
|
// players[3].id, [
|
||||||
], [
|
// Round(12, null, 12, players[3]),
|
||||||
players[0],
|
// Round(7, 3, 10, players[2]),
|
||||||
players[1],
|
// Round(6, 2, 8, players[1]),
|
||||||
players[2],
|
// Round(5, 1, 12, players[0])
|
||||||
players[3]
|
// ], [
|
||||||
]),
|
// players[0],
|
||||||
GameDetail(5, DateTime.now().subtract(Duration(days: 10)),
|
// players[1],
|
||||||
players[4].id, 280, true, null, players[4].id, [
|
// players[2],
|
||||||
Round(9, 1, 10, players[4]),
|
// players[3]
|
||||||
Round(7, 3, 10, players[2]),
|
// ]),
|
||||||
Round(8, 2, 10, players[3]),
|
// GameDetail(5, DateTime.now().subtract(Duration(days: 10)),
|
||||||
Round(5, 2, 7, players[1])
|
// players[4].id, 280, true, null, players[4].id, [
|
||||||
], [
|
// Round(9, 1, 10, players[4]),
|
||||||
players[1],
|
// Round(7, 3, 10, players[2]),
|
||||||
players[2],
|
// Round(8, 2, 10, players[3]),
|
||||||
players[3],
|
// Round(5, 2, 7, players[1])
|
||||||
players[4]
|
// ], [
|
||||||
]),
|
// players[1],
|
||||||
GameDetail(6, DateTime.now().subtract(Duration(days: 12)),
|
// players[2],
|
||||||
players[1].id, 240, true, null, players[1].id, [
|
// players[3],
|
||||||
Round(7, null, 7, players[1]),
|
// players[4]
|
||||||
Round(5, 2, 7, players[2]),
|
// ]),
|
||||||
Round(6, 2, 8, players[1]),
|
// GameDetail(6, DateTime.now().subtract(Duration(days: 12)),
|
||||||
Round(5, 1, 12, players[0])
|
// players[1].id, 240, true, null, players[1].id, [
|
||||||
], [
|
// Round(7, null, 7, players[1]),
|
||||||
players[0],
|
// Round(5, 2, 7, players[2]),
|
||||||
players[1],
|
// Round(6, 2, 8, players[1]),
|
||||||
players[2],
|
// Round(5, 1, 12, players[0])
|
||||||
players[4]
|
// ], [
|
||||||
]),
|
// players[0],
|
||||||
GameDetail(7, DateTime.now().subtract(Duration(days: 15)),
|
// players[1],
|
||||||
players[2].id, 200, true, null, players[2].id, [
|
// players[2],
|
||||||
Round(8, 2, 10, players[2]),
|
// players[4]
|
||||||
Round(4, 2, 6, players[1]),
|
// ]),
|
||||||
Round(7, 3, 10, players[3]),
|
// GameDetail(7, DateTime.now().subtract(Duration(days: 15)),
|
||||||
Round(5, 2, 7, players[0])
|
// players[2].id, 200, true, null, players[2].id, [
|
||||||
], [
|
// Round(8, 2, 10, players[2]),
|
||||||
players[0],
|
// Round(4, 2, 6, players[1]),
|
||||||
players[1],
|
// Round(7, 3, 10, players[3]),
|
||||||
players[2],
|
// Round(5, 2, 7, players[0])
|
||||||
players[3]
|
// ], [
|
||||||
])
|
// players[0],
|
||||||
];
|
// players[1],
|
||||||
|
// players[2],
|
||||||
print("GameDetail :");
|
// players[3]
|
||||||
for (var game in games) {
|
// ])
|
||||||
displayGameDetail(game,1);
|
// ];
|
||||||
print("\t-----------------------------------------");
|
//
|
||||||
}
|
// print("GameDetail :");
|
||||||
|
// for (var game in games) {
|
||||||
print("StubManager:");
|
// displayGameDetail(game,1);
|
||||||
IManager mgr = new StubData();
|
// print("\t-----------------------------------------");
|
||||||
|
// }
|
||||||
print("\tGameManager:");
|
//
|
||||||
|
// print("StubManager:");
|
||||||
print("\tgetGameById function with id: 2");
|
// IManager mgr = new StubData();
|
||||||
GameDetail gd = mgr.gameMgr.getGameById(2);
|
//
|
||||||
displayGameDetail(gd,2);
|
// print("\tGameManager:");
|
||||||
|
//
|
||||||
print("\tgetGamesByPlayerId function with id: 2");
|
// print("\tgetGameById function with id: 2");
|
||||||
List<GameDetail> gds = mgr.gameMgr.getGamesByPlayerId(8);
|
// GameDetail gd = mgr.gameMgr.getGameById(2);
|
||||||
for (var game in gds)
|
// displayGameDetail(gd,2);
|
||||||
{
|
//
|
||||||
displayGameDetail(game,2);
|
// print("\tgetGamesByPlayerId function with id: 2");
|
||||||
}
|
// List<GameDetail> gds = mgr.gameMgr.getGamesByPlayerId(8);
|
||||||
|
// for (var game in gds)
|
||||||
print("\tgetGamesByPlayer function:");
|
// {
|
||||||
var player = mgr.userMgr.getUserById(8);
|
// displayGameDetail(game,2);
|
||||||
List<GameDetail> gdsPlayer = mgr.gameMgr.getGamesByPlayer(player);
|
// }
|
||||||
for (var game in gdsPlayer)
|
//
|
||||||
{
|
// print("\tgetGamesByPlayer function:");
|
||||||
displayGameDetail(game,2);
|
// var player = mgr.userMgr.getUserById(8);
|
||||||
}
|
// List<GameDetail> gdsPlayer = mgr.gameMgr.getGamesByPlayer(player);
|
||||||
|
// for (var game in gdsPlayer)
|
||||||
print("\tgetGamesByPlayers:");
|
// {
|
||||||
var player2 = mgr.userMgr.getUserById(2);
|
// displayGameDetail(game,2);
|
||||||
List<Player> playersTest = [player,player2];
|
// }
|
||||||
List<GameDetail> gdsPlayers = mgr.gameMgr.getGamesByPlayers(playersTest);
|
//
|
||||||
for (var game in gdsPlayers)
|
// print("\tgetGamesByPlayers:");
|
||||||
{
|
// var player2 = mgr.userMgr.getUserById(2);
|
||||||
displayGameDetail(game,2);
|
// List<Player> playersTest = [player,player2];
|
||||||
}
|
// List<GameDetail> gdsPlayers = mgr.gameMgr.getGamesByPlayers(playersTest);
|
||||||
|
// for (var game in gdsPlayers)
|
||||||
print("\tgetPlayersByIdGame:");
|
// {
|
||||||
var playersIntoGame = mgr.gameMgr.getPlayersByIdGame(2);
|
// displayGameDetail(game,2);
|
||||||
for (var player in playersIntoGame)
|
// }
|
||||||
{
|
//
|
||||||
displayPlayer(player,2);
|
// print("\tgetPlayersByIdGame:");
|
||||||
}
|
// var playersIntoGame = mgr.gameMgr.getPlayersByIdGame(2);
|
||||||
|
// for (var player in playersIntoGame)
|
||||||
print("\tgetRankByIdGame:");
|
// {
|
||||||
var ranksPlayers = mgr.gameMgr.getRankByIdGame(2);
|
// displayPlayer(player,2);
|
||||||
ranksPlayers.forEach((id, rank) {
|
// }
|
||||||
displayPlayer(mgr.userMgr.getUserById(id),2);
|
//
|
||||||
print('\t\tRank $rank');
|
// print("\tgetRankByIdGame:");
|
||||||
});
|
// var ranksPlayers = mgr.gameMgr.getRankByIdGame(2);
|
||||||
}
|
// ranksPlayers.forEach((id, rank) {
|
||||||
|
// displayPlayer(mgr.userMgr.getUserById(id),2);
|
||||||
void displayGameDetail(GameDetail gd, int numTabs)
|
// print('\t\tRank $rank');
|
||||||
{
|
// });
|
||||||
String tabs = '\t' * numTabs;
|
// }
|
||||||
print(tabs+"Game ID: ${gd.id}");
|
//
|
||||||
print(tabs+"Time: ${gd.time}");
|
// void displayGameDetail(GameDetail gd, int numTabs)
|
||||||
print(tabs+"Winner: ${gd.winner}");
|
// {
|
||||||
print(tabs+"Number of Points: ${gd.nbPoints}");
|
// String tabs = '\t' * numTabs;
|
||||||
print(tabs+"Is Finished: ${gd.isFinished}");
|
// print(tabs+"Game ID: ${gd.id}");
|
||||||
print(tabs+"Current Round: ${gd.currentRound}");
|
// print(tabs+"Time: ${gd.time}");
|
||||||
print(tabs+"Host: ${gd.host}");
|
// print(tabs+"Winner: ${gd.winner}");
|
||||||
print(tabs+"Rank: ${gd.getRank()}");
|
// print(tabs+"Number of Points: ${gd.nbPoints}");
|
||||||
print(tabs+"Rounds:");
|
// print(tabs+"Is Finished: ${gd.isFinished}");
|
||||||
for (var round in gd.rounds) {
|
// print(tabs+"Current Round: ${gd.currentRound}");
|
||||||
displayRound(round, numTabs+1);
|
// print(tabs+"Host: ${gd.host}");
|
||||||
}
|
// print(tabs+"Rank: ${gd.getRank()}");
|
||||||
print(tabs+"Players:");
|
// print(tabs+"Rounds:");
|
||||||
for (var player in gd.players) {
|
// for (var round in gd.rounds) {
|
||||||
displayPlayer(player, numTabs+1);
|
// displayRound(round, numTabs+1);
|
||||||
}
|
// }
|
||||||
}
|
// print(tabs+"Players:");
|
||||||
|
// for (var player in gd.players) {
|
||||||
void displayRound(Round round, int numTabs)
|
// displayPlayer(player, numTabs+1);
|
||||||
{
|
// }
|
||||||
String tabs = '\t' * numTabs;
|
// }
|
||||||
print(tabs+"Round Score: ${round.firstThrow}");
|
//
|
||||||
print(tabs+"Round Bonus: ${round.secondThrow}");
|
// void displayRound(Round round, int numTabs)
|
||||||
print(tabs+"Round Total: ${round.points}");
|
// {
|
||||||
print(tabs+"Round Player: ${round.player.name}");
|
// String tabs = '\t' * numTabs;
|
||||||
}
|
// print(tabs+"Round Score: ${round.firstThrow}");
|
||||||
|
// print(tabs+"Round Bonus: ${round.secondThrow}");
|
||||||
void displayPlayer(Player player, int numTabs)
|
// print(tabs+"Round Total: ${round.points}");
|
||||||
{
|
// print(tabs+"Round Player: ${round.player.name}");
|
||||||
String tabs = '\t' * numTabs;
|
// }
|
||||||
if (player is Guest) {
|
//
|
||||||
print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Guest");
|
// void displayPlayer(Player player, int numTabs)
|
||||||
} else if (player is User) {
|
// {
|
||||||
print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: User");
|
// String tabs = '\t' * numTabs;
|
||||||
print(tabs+"Achievements:");
|
// if (player is Guest) {
|
||||||
for (var achievement in player.achievements) {
|
// print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Guest");
|
||||||
displayAchievement(achievement, numTabs+1);
|
// } else if (player is User) {
|
||||||
}
|
// print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: User");
|
||||||
print(tabs+"Amis:");
|
// print(tabs+"Achievements:");
|
||||||
for (var amis in player.friends) {
|
// for (var achievement in player.achievements) {
|
||||||
print("\t\tNom: ${amis.name}, Mail: ${amis.mail}");
|
// displayAchievement(achievement, numTabs+1);
|
||||||
}
|
// }
|
||||||
print(tabs+"Victoires: ${player.stat.nbVictory}, Défaites: ${player.stat.nbDefeat}, Parties jouées: ${player.stat.nbGames}, Meilleur score: ${player.stat.highscore}, Nombre de strikes: ${player.stat.nbStrikes}, Nom de spares: ${player.stat.nbStrikes}, Moyenne score: ${player.stat.avgScore}, Moyenne score par round: ${player.stat.avgPinsPerRound}");
|
// print(tabs+"Amis:");
|
||||||
} else {
|
// for (var amis in player.friends) {
|
||||||
print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Player");
|
// print("\t\tNom: ${amis.name}, Mail: ${amis.mail}");
|
||||||
}
|
// }
|
||||||
}
|
// print(tabs+"Victoires: ${player.stat.nbVictory}, Défaites: ${player.stat.nbDefeat}, Parties jouées: ${player.stat.nbGames}, Meilleur score: ${player.stat.highscore}, Nombre de strikes: ${player.stat.nbStrikes}, Nom de spares: ${player.stat.nbStrikes}, Moyenne score: ${player.stat.avgScore}, Moyenne score par round: ${player.stat.avgPinsPerRound}");
|
||||||
|
// } else {
|
||||||
void displayAchievement(Achievement achievement, int numTabs)
|
// print(tabs+"ID: ${player.id}, Nom: ${player.name}, Image: ${player.image}, Type: Player");
|
||||||
{
|
// }
|
||||||
String tabs = '\t' * numTabs;
|
// }
|
||||||
print(tabs+"Nom: ${achievement.name}");
|
//
|
||||||
}
|
// void displayAchievement(Achievement achievement, int numTabs)
|
||||||
|
// {
|
||||||
|
// String tabs = '\t' * numTabs;
|
||||||
|
// print(tabs+"Nom: ${achievement.name}");
|
||||||
|
// }
|
Loading…
Reference in new issue