import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
final int targetScore = 20;
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Scoring Game Machine',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: GameScreen(),
);
}
}
class GameScreen extends StatefulWidget {
@override
_GameScreenState createState() => _GameScreenState();
}
class _GameScreenState extends State<GameScreen> {
List<int> scores = [0, 0, 0];
int currentPlayer = 0;
List<int> turns = [0, 0, 0];
bool gameOver = false;
List<int> finishedPlayers = [];
void _incrementScore() {
if (gameOver) return;
setState(() {
scores[currentPlayer] += 1;
turns[currentPlayer] += 1;
if (scores[currentPlayer] >= targetScore) {
finishedPlayers.add(currentPlayer);
if (finishedPlayers.length == 2) {
gameOver = true;
} else {
currentPlayer = (currentPlayer + 1) % 3;
while (finishedPlayers.contains(currentPlayer)) {
currentPlayer = (currentPlayer + 1) % 3;
}
}
} else {
currentPlayer = (currentPlayer + 1) % 3;
while (finishedPlayers.contains(currentPlayer)) {
currentPlayer = (currentPlayer + 1) % 3;
}
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Scoring Game'),
),
body: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
for (int i = 0; i < 3; i++)
PlayerWidget(
playerNumber: i + 1,
score: scores[i],
isTurn: currentPlayer == i && !finishedPlayers.contains(i),
onPressed: _incrementScore,
),
if (gameOver) MatchSummary(scores: scores, turns: turns),
],
),
),
);
}
}
class PlayerWidget extends StatelessWidget {
final int playerNumber;
final int score;
final bool i