From 573fb4959aa6aee6888df5ae3bf6cdc8577a2ca0 Mon Sep 17 00:00:00 2001 From: shanthu Date: Fri, 24 May 2019 10:23:39 +0530 Subject: [PATCH 1/3] added DisplayItem.. and tapping Game is done --- lib/games/tapping_game.dart | 121 ++++++++++++ lib/storyboard.dart | 2 + lib/storyboards/games/bingo_game_story.dart | 86 ++++++--- .../games/box_matching_game_story.dart | 81 +++++++- .../games/fill_in_the_blanks_story.dart | 75 +++++++- .../games/find_word_game_story.dart | 64 ++++++- .../games/jumbled_words_game_story.dart | 76 +++++++- .../games/match_the_shape_game_story.dart | 49 ++++- .../games/match_with_image_game_story.dart | 59 ++++-- lib/storyboards/games/memory_game_story.dart | 180 +++++++++++++++--- .../games/multiple_choice_game_story.dart | 34 +++- .../games/rhyme_words_game_story.dart | 61 +++++- .../games/sequence_alphabet_game_story.dart | 30 ++- lib/storyboards/games/tapping_game_story.dart | 25 +++ .../games/true_false_game_story.dart | 13 +- lib/widgets/display_item_widget.dart | 8 + 16 files changed, 872 insertions(+), 92 deletions(-) create mode 100644 lib/games/tapping_game.dart create mode 100644 lib/storyboards/games/tapping_game_story.dart diff --git a/lib/games/tapping_game.dart b/lib/games/tapping_game.dart new file mode 100644 index 00000000..fc548abe --- /dev/null +++ b/lib/games/tapping_game.dart @@ -0,0 +1,121 @@ +import 'dart:math'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:maui/util/game_utils.dart'; + +class TappingGame extends StatefulWidget { + const TappingGame({ + key, + this.choice, + this.onGameUpdate, + }) : super(key: key); + final int choice; + final OnGameUpdate onGameUpdate; + + TappingGameState createState() => TappingGameState(); +} + +class TappingGameState extends State { + List intialOffsets = []; + List destinationOffsets = []; + List widgets = []; + int countTheClick = 0; + bool withoutClick = false; + bool clickOnScreen = true; + @override + Widget build(BuildContext context) { + MediaQueryData media = MediaQuery.of(context); + var size = media.size; + var childWidth = size.height / 8; + Random random = Random(); + var childHeight = size.height / 4; + if (withoutClick == false) { + for (double i = 1; i <= 10; i++) { + destinationOffsets.add(Offset( + max(0, random.nextDouble() * size.width - childWidth), + max(0, random.nextDouble() * size.height - childHeight))); + intialOffsets.add(Offset((i % 2) * size.width, (i % 3) * size.height)); +// Offset( + // (i ~/ 4) * childWidth, ((5 - 4) / 2 + (i % 4)) * childWidth) + // Offset(max(0, random.nextDouble() * size.width - childWidth), + // max(0, random.nextDouble() * size.height - childHeight)); + } + for (int i = 0; i < 10; i++) { + widgets.add(AnimatedPositioned( + duration: Duration.zero, + left: intialOffsets[i].dx, + top: intialOffsets[i].dy, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Container(), + ), + )); + } + } + + return GestureDetector( + onTap: () { + if (countTheClick < widget.choice && clickOnScreen) { + withoutClick = true; + setState(() { + clickOnScreen = false; + }); + _buildMovingWidget(); + } + }, + child: Scaffold( + body: Stack( + children: [ + Positioned( + left: size.width / 2, + top: 40.0, + child: Text("clickAnyWhere...${widget.choice}..times")), + widgets.isEmpty + ? Container() + : Stack( + children: widgets, + ) + ], + )), + ); + } + + void _buildMovingWidget() { + setState(() { + setState(() { + intialOffsets.removeAt(countTheClick); + intialOffsets.insert(countTheClick, destinationOffsets[countTheClick]); + widgets.removeAt(countTheClick); + widgets.insert( + countTheClick, + AnimatedPositioned( + duration: Duration(milliseconds: 1500), + left: intialOffsets[countTheClick].dx, + top: intialOffsets[countTheClick].dy, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: SizedBox( + height: 100.0, + width: 100.0, + child: Card( + color: Colors.blue, + elevation: 10.0, + child: Center(child: Text("${countTheClick + 1}..data"))), + ), + ), + )); + if (countTheClick == widget.choice) { + setState(() { + widget.onGameUpdate(score: 2, max: 2, gameOver: true, star: true); + }); + } + countTheClick = countTheClick + 1; + }); + }); + new Future.delayed(const Duration(milliseconds: 1500), () { + setState(() { + clickOnScreen = true; + }); + }); + } +} diff --git a/lib/storyboard.dart b/lib/storyboard.dart index 136491bc..87ef1efe 100644 --- a/lib/storyboard.dart +++ b/lib/storyboard.dart @@ -40,6 +40,7 @@ import 'package:maui/storyboards/games/spin_wheel_game_story.dart'; import 'package:maui/storyboards/games/tables_game_story.dart'; import 'package:maui/storyboards/games/tap_home_story.dart'; import 'package:maui/storyboards/games/tap_wrong_game_story.dart'; +import 'package:maui/storyboards/games/tapping_game_story.dart'; import 'package:maui/storyboards/games/tracing_alphabets_story.dart'; import 'package:maui/storyboards/games/true_false_game_story.dart'; import 'package:maui/storyboards/games/unit_game_story.dart'; @@ -123,6 +124,7 @@ void main() { TablesGameStory(), TapHomeStory(), TapWrongGameStory(), + TappingGameStory(), ThemeMapStory(), TracingAlphabetStory(), TrueFalseGameStory(), diff --git a/lib/storyboards/games/bingo_game_story.dart b/lib/storyboards/games/bingo_game_story.dart index 644cb23d..0b74d740 100644 --- a/lib/storyboards/games/bingo_game_story.dart +++ b/lib/storyboards/games/bingo_game_story.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:maui/games/bingo_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; class BingoGameStory extends FullScreenStory { @@ -9,33 +10,70 @@ class BingoGameStory extends FullScreenStory { Scaffold( body: SafeArea( child: BingoGame( - choices: { - 'A': 'A', - 'B': 'B', - 'C': 'C', - 'D': 'D', - }, - ), - ), - ), - Scaffold( - body: SafeArea( - child: BingoGame( - choices: { - 'A': 'A', - 'B': 'B', - 'C': 'C', - 'D': 'D', - 'E': 'E', - 'F': 'F', - 'G': 'G', - 'H': 'H', - 'I': 'I', - 'J': 'J', - 'K': 'K' + choices: { + DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ): DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'B' + ..displayType = DisplayTypeEnum.letter, + ): DisplayItem( + (d) => d + ..item = 'B' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'C' + ..displayType = DisplayTypeEnum.letter, + ): DisplayItem( + (d) => d + ..item = 'C' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'D' + ..displayType = DisplayTypeEnum.letter, + ): DisplayItem( + (d) => d + ..item = 'D' + ..displayType = DisplayTypeEnum.letter, + ), + + // 'A': 'A', + // 'B': 'B', + // 'C': 'C', + // 'D': 'D', }, ), ), ), + // Scaffold( + // body: SafeArea( + // child: BingoGame( + // choices: { + // 'A': 'A', + // 'B': 'B', + // 'C': 'C', + // 'D': 'D', + // 'E': 'E', + // 'F': 'F', + // 'G': 'G', + // 'H': 'H', + // 'I': 'I', + // 'J': 'J', + // 'K': 'K' + // }, + // ), + // ), + // ), ]; } diff --git a/lib/storyboards/games/box_matching_game_story.dart b/lib/storyboards/games/box_matching_game_story.dart index ea7da6b3..d00bae58 100644 --- a/lib/storyboards/games/box_matching_game_story.dart +++ b/lib/storyboards/games/box_matching_game_story.dart @@ -1,6 +1,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:flutter/material.dart'; import 'package:maui/games/box_matching_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; class BoxMatchingGameStory extends FullScreenStory { @@ -9,9 +10,83 @@ class BoxMatchingGameStory extends FullScreenStory { Scaffold( body: SafeArea( child: BoxMatchingGame( - choices: BuiltList( - ['A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B']), - answers: BuiltList(['A', 'B', 'C', 'D']), + choices: BuiltList([ + DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'B' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'C' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'D' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'B' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'C' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'D' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'B' + ..displayType = DisplayTypeEnum.letter, + ), + + // 'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B' + ]), + answers: BuiltList([ + DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'B' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'C' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'D' + ..displayType = DisplayTypeEnum.letter, + ), + // 'A', 'B', 'C', 'D' + ]), onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ), ), diff --git a/lib/storyboards/games/fill_in_the_blanks_story.dart b/lib/storyboards/games/fill_in_the_blanks_story.dart index bacb8679..ddeda241 100644 --- a/lib/storyboards/games/fill_in_the_blanks_story.dart +++ b/lib/storyboards/games/fill_in_the_blanks_story.dart @@ -1,6 +1,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:flutter/material.dart'; import 'package:maui/games/fill_in_the_blanks_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; import 'package:tuple/tuple.dart'; @@ -11,8 +12,30 @@ class FillInTheBlanksGameStory extends FullScreenStory { body: SafeArea( child: FillInTheBlanksGame( question: ' Mount Everest is the highest 1_ in the 2_ .', - choices: - BuiltList(['mountain', 'earth', 'chair', 'ball']), + choices: BuiltList([ + DisplayItem( + (d) => d + ..item = "mountain" + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = "earth" + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = "chair" + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = "ball" + ..displayType = DisplayTypeEnum.word, + ), + + // 'mountain', 'earth', 'chair', 'ball' + ]), onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ), ), @@ -22,14 +45,58 @@ class FillInTheBlanksGameStory extends FullScreenStory { child: FillInTheBlanksGame( question: ' The fact is Mount Everest is the highest 1_ in the earth followed by K2,located in the Himalayas.', - choices: BuiltList(['mountain', 'earth', 'chair', 'ball']), + choices: BuiltList([ + DisplayItem( + (d) => d + ..item = "mountain" + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = "earth" + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = "chair" + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = "ball" + ..displayType = DisplayTypeEnum.word, + ), + // 'mountain', 'earth', 'chair', 'ball' + ]), onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ))), Scaffold( body: SafeArea( child: FillInTheBlanksGame( question: 'Lion is the king of the 1_ .', - choices: BuiltList(['jungle', 'earth', 'chair', 'ball']), + choices: BuiltList([ + DisplayItem( + (d) => d + ..item = "jungle" + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = "earth" + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = "chair" + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = "ball" + ..displayType = DisplayTypeEnum.word, + ), + // 'jungle', 'earth', 'chair', 'ball' + ]), onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ))) ]; diff --git a/lib/storyboards/games/find_word_game_story.dart b/lib/storyboards/games/find_word_game_story.dart index 1e991c77..380e60a1 100644 --- a/lib/storyboards/games/find_word_game_story.dart +++ b/lib/storyboards/games/find_word_game_story.dart @@ -2,6 +2,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:maui/games/find_word_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; class FindWordGameStory extends FullScreenStory { @@ -11,9 +12,68 @@ class FindWordGameStory extends FullScreenStory { body: SafeArea( child: FindWordGame( image: 'assets/accessories/apple.png', - answer: BuiltList(['A', 'P', 'P', 'L', 'E']), + answer: BuiltList([ + + DisplayItem( + (d) => d..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d..item = 'P' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d..item = 'P' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d..item = 'L' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d..item = 'E' + ..displayType = DisplayTypeEnum.letter, + ), + + // 'A', 'P', 'P', 'L', 'E' + ]), choices: - BuiltList(['A', 'X', 'Y', 'P', 'E', 'B', 'L', 'W']), + BuiltList([ + DisplayItem( + (d) => d..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d..item = 'X' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d..item = 'Y' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d..item = 'P' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d..item = 'E' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d..item = 'B' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d..item = 'L' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d..item = 'W' + ..displayType = DisplayTypeEnum.letter, + ), + // 'A', 'X', 'Y', 'P', 'E', 'B', 'L', 'W' + + ]), onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ), ), diff --git a/lib/storyboards/games/jumbled_words_game_story.dart b/lib/storyboards/games/jumbled_words_game_story.dart index 464fe4bc..c3c40088 100644 --- a/lib/storyboards/games/jumbled_words_game_story.dart +++ b/lib/storyboards/games/jumbled_words_game_story.dart @@ -2,6 +2,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:maui/games/jumbled_words_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; class JumbledWordsGameStory extends FullScreenStory { @@ -10,8 +11,49 @@ class JumbledWordsGameStory extends FullScreenStory { Scaffold( body: SafeArea( child: JumbledWordsGame( - answer: 'A', - choices: BuiltList(['A', 'B', 'C', 'D', 'E', 'F', 'H']), + answer: DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + choices: BuiltList([ + DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'B' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'C' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'D' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'E' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'F' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'H' + ..displayType = DisplayTypeEnum.letter, + ), + // 'A', 'B', 'C', 'D', 'E', 'F', 'H' + ]), onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ), ), @@ -19,8 +61,34 @@ class JumbledWordsGameStory extends FullScreenStory { Scaffold( body: SafeArea( child: JumbledWordsGame( - answer: 'A', - choices: BuiltList(['A', 'B', 'C', 'D']), + answer: DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + choices: BuiltList([ + DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'B' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'C' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'D' + ..displayType = DisplayTypeEnum.letter, + ), + // 'A', 'B', 'C', 'D' + ]), onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ), ), diff --git a/lib/storyboards/games/match_the_shape_game_story.dart b/lib/storyboards/games/match_the_shape_game_story.dart index 96534cf7..82d3aea9 100644 --- a/lib/storyboards/games/match_the_shape_game_story.dart +++ b/lib/storyboards/games/match_the_shape_game_story.dart @@ -2,6 +2,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:maui/games/match_the_shape_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; class MatchTheShapeGameStory extends FullScreenStory { @@ -10,8 +11,52 @@ class MatchTheShapeGameStory extends FullScreenStory { Scaffold( body: SafeArea( child: MatchTheShapeGame( - first: BuiltList(['1', '2', '3', '4']), - second: BuiltList(['1', '2', '3', '4']), + first: BuiltList([ + DisplayItem( + (d) => d + ..item = '1' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '2' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '3' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '4' + ..displayType = DisplayTypeEnum.letter, + ), + // '1', '2', '3', '4' + ]), + second: BuiltList([ + DisplayItem( + (d) => d + ..item = '1' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '2' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '3' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '4' + ..displayType = DisplayTypeEnum.letter, + ), + // '1', '2', '3', '4' + ]), ), ), ) diff --git a/lib/storyboards/games/match_with_image_game_story.dart b/lib/storyboards/games/match_with_image_game_story.dart index 16d186a8..705fd151 100644 --- a/lib/storyboards/games/match_with_image_game_story.dart +++ b/lib/storyboards/games/match_with_image_game_story.dart @@ -2,6 +2,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:maui/games/match_with_image_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; class MatchWithImageGameStory extends FullScreenStory { @@ -10,20 +11,52 @@ class MatchWithImageGameStory extends FullScreenStory { Scaffold( body: SafeArea( child: MatchWithImageGame( - images: BuiltList([ - 'assets/accessories/apple.png', - 'assets/accessories/camera.png', - 'assets/accessories/fruit.png' - ]), - choices: BuiltList([ - 'Camera', - 'Fruit', - 'Apple', + // images: BuiltList([ + // 'assets/accessories/apple.png', + // 'assets/accessories/camera.png', + // 'assets/accessories/fruit.png' + // ]), + choices: BuiltList([ + DisplayItem( + (d) => d + ..item = 'Camera' + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = 'Fruit' + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = 'Apple' + ..displayType = DisplayTypeEnum.word, + ), + + // 'Camera', + // 'Fruit', + // 'Apple', ]), - answers: BuiltList([ - 'Apple', - 'Camera', - 'Fruit', + answers: BuiltList([ + DisplayItem( + (d) => d + ..item = 'Apple' + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = 'Camera' + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = 'Fruit' + ..displayType = DisplayTypeEnum.word, + ), + + // 'Apple', + // 'Camera', + // 'Fruit', ]), ), ), diff --git a/lib/storyboards/games/memory_game_story.dart b/lib/storyboards/games/memory_game_story.dart index 820e98d8..110ec770 100644 --- a/lib/storyboards/games/memory_game_story.dart +++ b/lib/storyboards/games/memory_game_story.dart @@ -1,6 +1,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:flutter/material.dart'; import 'package:maui/games/memory_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; class MemoryGameStory extends FullScreenStory { @@ -9,35 +10,168 @@ class MemoryGameStory extends FullScreenStory { Scaffold( body: SafeArea( child: MemoryGame( - first: BuiltList(['1', '2', '3', '4','5','6','7','8']), - second: BuiltList(['1', '2', '3', '4','5','6','7','8']), - onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, - ), - ), - ), Scaffold( - body: SafeArea( - child: MemoryGame( - first: BuiltList(['1', '2', '3', '4']), - second: BuiltList(['1', '2', '3', '4']), - onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, - ), - ), - ), Scaffold( - body: SafeArea( - child: MemoryGame( - first: BuiltList(['1', '2', '3', '4','5','6']), - second: BuiltList(['1', '2', '3', '4','5','6']), - onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, + first: BuiltList([ + DisplayItem( + (d) => d + ..item = '1' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '2' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '3' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '4' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '5' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '6' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '7' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '8' + ..displayType = DisplayTypeEnum.letter, + ), + + // '1', '2', '3', '4', '5', '6', '7', '8' + ]), + second: BuiltList([ + DisplayItem( + (d) => d + ..item = '1' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '2' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '3' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '4' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '5' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '6' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '7' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '8' + ..displayType = DisplayTypeEnum.letter, + ), + // '1', '2', '3', '4', '5', '6', '7', '8' + ]), + onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ), ), - ),Scaffold( + ), + Scaffold( body: SafeArea( child: MemoryGame( - first: BuiltList(['APPLE','MANGO','GUAVA','PEACH','LICHI','GRAPES',]), - second: BuiltList(['Apple', 'Mange', 'Guava', 'Peach','Lichi','Grapes',]), - onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, + first: BuiltList([ + DisplayItem( + (d) => d + ..item = '1' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '2' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '3' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '4' + ..displayType = DisplayTypeEnum.letter, + ), + + // '1', '2', '3', '4' + ]), + second: BuiltList([ + DisplayItem( + (d) => d + ..item = '1' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '2' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '3' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = '4' + ..displayType = DisplayTypeEnum.letter, + ), + + // '1', '2', '3', '4' + ]), + onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ), ), ), + // Scaffold( + // body: SafeArea( + // child: MemoryGame( + // first: BuiltList(['1', '2', '3', '4','5','6']), + // second: BuiltList(['1', '2', '3', '4','5','6']), + // onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, + // ), + // ), + // ),Scaffold( + // body: SafeArea( + // child: MemoryGame( + // first: BuiltList(['APPLE','MANGO','GUAVA','PEACH','LICHI','GRAPES',]), + // second: BuiltList(['Apple', 'Mange', 'Guava', 'Peach','Lichi','Grapes',]), + // onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, + // ), + // ), + // ), ]; } diff --git a/lib/storyboards/games/multiple_choice_game_story.dart b/lib/storyboards/games/multiple_choice_game_story.dart index afecb953..c95255df 100644 --- a/lib/storyboards/games/multiple_choice_game_story.dart +++ b/lib/storyboards/games/multiple_choice_game_story.dart @@ -1,6 +1,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:flutter/material.dart'; import 'package:maui/games/multiple_choice_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; class MultipleChoiceGameStory extends FullScreenStory { @@ -10,11 +11,36 @@ class MultipleChoiceGameStory extends FullScreenStory { body: SafeArea( child: MultipleChoiceGame( key: Key('MultipleChoiceGame'), - question: 'The largest land animal is _________________?', - answers: BuiltList([ - 'African Bush Elephant', + question: DisplayItem( + (d) => d + ..item = 'The largest land animal is _________________?' + ..displayType = DisplayTypeEnum.sentence, + ), + // 'The largest land animal is _________________?', + answers: BuiltList([ + DisplayItem( + (d) => d + ..item = 'African Bush Elephant' + ..displayType = DisplayTypeEnum.sentence, + ), + // 'African Bush Elephant', + ]), + choices: BuiltList([ + DisplayItem((d) => d + ..item = 'Lion' + ..displayType = DisplayTypeEnum.word), + DisplayItem( + (d) => d + ..item = 'Whale' + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = 'Panther' + ..displayType = DisplayTypeEnum.word, + ), + // 'Lion', 'Whale', 'Panther' ]), - choices: BuiltList(['Lion', 'Whale', 'Panther']), onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ), ), diff --git a/lib/storyboards/games/rhyme_words_game_story.dart b/lib/storyboards/games/rhyme_words_game_story.dart index 7441b6d4..669f7bca 100644 --- a/lib/storyboards/games/rhyme_words_game_story.dart +++ b/lib/storyboards/games/rhyme_words_game_story.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:maui/games/finger_game.dart'; import 'package:maui/games/rhyme_words_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; class RhymeWordsGameStory extends FullScreenStory { @@ -11,17 +12,57 @@ class RhymeWordsGameStory extends FullScreenStory { Scaffold( body: SafeArea( child: RhymeWordsGame( - questions: BuiltList([ - 'Pin', - 'Pet', - 'Me', - 'Bee', + questions: BuiltList([ + DisplayItem( + (d) => d + ..item = 'Pin' + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = 'Pet' + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = 'Me' + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = 'Bee' + ..displayType = DisplayTypeEnum.word, + ), + // 'Pin', + // 'Pet', + // 'Me', + // 'Bee', ]), - answers: BuiltList([ - 'Win', - 'Wet', - 'We', - 'See', + answers: BuiltList([ + DisplayItem( + (d) => d + ..item = 'Win' + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = 'Wet' + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = 'We' + ..displayType = DisplayTypeEnum.word, + ), + DisplayItem( + (d) => d + ..item = 'See' + ..displayType = DisplayTypeEnum.word, + ), + // 'Win', + // 'Wet', + // 'We', + // 'See', ]), ), ), diff --git a/lib/storyboards/games/sequence_alphabet_game_story.dart b/lib/storyboards/games/sequence_alphabet_game_story.dart index 04281f40..48ce640c 100644 --- a/lib/storyboards/games/sequence_alphabet_game_story.dart +++ b/lib/storyboards/games/sequence_alphabet_game_story.dart @@ -2,6 +2,7 @@ import 'package:built_collection/built_collection.dart'; import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:maui/games/sequence_alphabet_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; class SequenceAlphabetGameStory extends FullScreenStory { @@ -10,7 +11,34 @@ class SequenceAlphabetGameStory extends FullScreenStory { Scaffold( body: SafeArea( child: SequenceAlphabetGame( - answers: BuiltList(['A', 'P', 'P', 'L', 'E']), + answers: BuiltList([ + // 'A', 'P', 'P', 'L', 'E' + DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'p' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'P' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'L' + ..displayType = DisplayTypeEnum.letter, + ), + DisplayItem( + (d) => d + ..item = 'E' + ..displayType = DisplayTypeEnum.letter, + ), + ]), ), ), ), diff --git a/lib/storyboards/games/tapping_game_story.dart b/lib/storyboards/games/tapping_game_story.dart new file mode 100644 index 00000000..f52cf761 --- /dev/null +++ b/lib/storyboards/games/tapping_game_story.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:maui/games/tapping_game.dart'; +import 'package:storyboard/storyboard.dart'; + +class TappingGameStory extends FullScreenStory { + @override + List get storyContent => [ + Scaffold( + body: SafeArea( + child: TappingGame( + choice: 8, + onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, + ), + ), + ), + Scaffold( + body: SafeArea( + child: TappingGame( + choice: 5, + onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, + ), + ), + ), + ]; +} diff --git a/lib/storyboards/games/true_false_game_story.dart b/lib/storyboards/games/true_false_game_story.dart index 81356333..11e08fc5 100644 --- a/lib/storyboards/games/true_false_game_story.dart +++ b/lib/storyboards/games/true_false_game_story.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:maui/games/finger_game.dart'; import 'package:maui/games/true_false_game.dart'; +import 'package:maui/models/display_item.dart'; import 'package:storyboard/storyboard.dart'; class TrueFalseGameStory extends FullScreenStory { @@ -10,8 +11,16 @@ class TrueFalseGameStory extends FullScreenStory { Scaffold( body: SafeArea( child: TrueFalseGame( - question: 'Pin', - answer: 'Win', + question: DisplayItem( + (d) => d + ..item = 'Pin' + ..displayType = DisplayTypeEnum.word, + ), + answer: DisplayItem( + (d) => d + ..item = 'win' + ..displayType = DisplayTypeEnum.word, + ), right_or_wrong: false, ), ), diff --git a/lib/widgets/display_item_widget.dart b/lib/widgets/display_item_widget.dart index ce279f8b..533d264e 100644 --- a/lib/widgets/display_item_widget.dart +++ b/lib/widgets/display_item_widget.dart @@ -40,8 +40,16 @@ class DisplayItemWidget extends StatelessWidget { case DisplayTypeEnum.syllable: break; case DisplayTypeEnum.word: + return AutoSizeText( + displayItem.item, + style: TextStyle(fontSize: 200), + ); break; case DisplayTypeEnum.sentence: + return AutoSizeText( + displayItem.item, + style: TextStyle(fontSize: 200), + ); break; } return Container(); From d264952f27d6f83dc9b5f20e44ad164a5038dc99 Mon Sep 17 00:00:00 2001 From: shanthu Date: Fri, 24 May 2019 10:26:39 +0530 Subject: [PATCH 2/3] added DisplayItem.. and tapping Game is done --- .../games/find_word_game_story.dart | 82 +++++++++++-------- .../games/jumbled_words_game_story.dart | 12 +-- .../games/moving_text_game_story.dart | 2 +- 3 files changed, 53 insertions(+), 43 deletions(-) diff --git a/lib/storyboards/games/find_word_game_story.dart b/lib/storyboards/games/find_word_game_story.dart index 380e60a1..589b9642 100644 --- a/lib/storyboards/games/find_word_game_story.dart +++ b/lib/storyboards/games/find_word_game_story.dart @@ -13,67 +13,77 @@ class FindWordGameStory extends FullScreenStory { child: FindWordGame( image: 'assets/accessories/apple.png', answer: BuiltList([ - - DisplayItem( - (d) => d..item = 'A' - ..displayType = DisplayTypeEnum.letter, + DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, ), DisplayItem( - (d) => d..item = 'P' - ..displayType = DisplayTypeEnum.letter, + (d) => d + ..item = 'P' + ..displayType = DisplayTypeEnum.letter, ), DisplayItem( - (d) => d..item = 'P' - ..displayType = DisplayTypeEnum.letter, + (d) => d + ..item = 'P' + ..displayType = DisplayTypeEnum.letter, ), DisplayItem( - (d) => d..item = 'L' - ..displayType = DisplayTypeEnum.letter, + (d) => d + ..item = 'L' + ..displayType = DisplayTypeEnum.letter, ), DisplayItem( - (d) => d..item = 'E' - ..displayType = DisplayTypeEnum.letter, + (d) => d + ..item = 'E' + ..displayType = DisplayTypeEnum.letter, ), - + // 'A', 'P', 'P', 'L', 'E' - ]), - choices: - BuiltList([ - DisplayItem( - (d) => d..item = 'A' - ..displayType = DisplayTypeEnum.letter, + ]), + choices: BuiltList([ + DisplayItem( + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, ), DisplayItem( - (d) => d..item = 'X' - ..displayType = DisplayTypeEnum.letter, + (d) => d + ..item = 'X' + ..displayType = DisplayTypeEnum.letter, ), DisplayItem( - (d) => d..item = 'Y' - ..displayType = DisplayTypeEnum.letter, + (d) => d + ..item = 'Y' + ..displayType = DisplayTypeEnum.letter, ), DisplayItem( - (d) => d..item = 'P' - ..displayType = DisplayTypeEnum.letter, + (d) => d + ..item = 'P' + ..displayType = DisplayTypeEnum.letter, ), DisplayItem( - (d) => d..item = 'E' - ..displayType = DisplayTypeEnum.letter, + (d) => d + ..item = 'E' + ..displayType = DisplayTypeEnum.letter, ), DisplayItem( - (d) => d..item = 'B' - ..displayType = DisplayTypeEnum.letter, + (d) => d + ..item = 'B' + ..displayType = DisplayTypeEnum.letter, ), DisplayItem( - (d) => d..item = 'L' - ..displayType = DisplayTypeEnum.letter, + (d) => d + ..item = 'L' + ..displayType = DisplayTypeEnum.letter, ), DisplayItem( - (d) => d..item = 'W' - ..displayType = DisplayTypeEnum.letter, + (d) => d + ..item = 'W' + ..displayType = DisplayTypeEnum.letter, ), - // 'A', 'X', 'Y', 'P', 'E', 'B', 'L', 'W' - - ]), + // 'A', 'X', 'Y', 'P', 'E', 'B', 'L', 'W' + ]), onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ), ), diff --git a/lib/storyboards/games/jumbled_words_game_story.dart b/lib/storyboards/games/jumbled_words_game_story.dart index c3c40088..affff545 100644 --- a/lib/storyboards/games/jumbled_words_game_story.dart +++ b/lib/storyboards/games/jumbled_words_game_story.dart @@ -62,12 +62,12 @@ class JumbledWordsGameStory extends FullScreenStory { body: SafeArea( child: JumbledWordsGame( answer: DisplayItem( - (d) => d - ..item = 'A' - ..displayType = DisplayTypeEnum.letter, - ), + (d) => d + ..item = 'A' + ..displayType = DisplayTypeEnum.letter, + ), choices: BuiltList([ - DisplayItem( + DisplayItem( (d) => d ..item = 'A' ..displayType = DisplayTypeEnum.letter, @@ -88,7 +88,7 @@ class JumbledWordsGameStory extends FullScreenStory { ..displayType = DisplayTypeEnum.letter, ), // 'A', 'B', 'C', 'D' - ]), + ]), onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ), ), diff --git a/lib/storyboards/games/moving_text_game_story.dart b/lib/storyboards/games/moving_text_game_story.dart index d58ecc7b..42641356 100644 --- a/lib/storyboards/games/moving_text_game_story.dart +++ b/lib/storyboards/games/moving_text_game_story.dart @@ -19,7 +19,7 @@ class MovingTextGameStory extends FullScreenStory { body: SafeArea( child: MovingTextGame( answers: BuiltList(['क', 'ख', 'ग', 'घ', 'ङ']), - choices: BuiltList(['क', 'ख', 'ग', 'घ' ,'ङ', 'च', 'छ']), + choices: BuiltList(['क', 'ख', 'ग', 'घ', 'ङ', 'च', 'छ']), onGameUpdate: ({int score, int max, bool gameOver, bool star}) {}, ), ), From d51c49b07ba0c4ca8050436de76c549ef1c2f512 Mon Sep 17 00:00:00 2001 From: shanthu Date: Mon, 27 May 2019 12:33:59 +0530 Subject: [PATCH 3/3] random offsets is done on screen and changes the namming --- lib/games/tapping_game.dart | 59 +++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/lib/games/tapping_game.dart b/lib/games/tapping_game.dart index fc548abe..de1a6e59 100644 --- a/lib/games/tapping_game.dart +++ b/lib/games/tapping_game.dart @@ -17,28 +17,31 @@ class TappingGame extends StatefulWidget { class TappingGameState extends State { List intialOffsets = []; - List destinationOffsets = []; + List finalOffsets = []; + List randomOffsets = []; List widgets = []; - int countTheClick = 0; - bool withoutClick = false; - bool clickOnScreen = true; + int trackTheClick = 0; + bool initialCalculation = false; + bool clickOnScreenDelay = true; @override Widget build(BuildContext context) { MediaQueryData media = MediaQuery.of(context); var size = media.size; var childWidth = size.height / 8; - Random random = Random(); - var childHeight = size.height / 4; - if (withoutClick == false) { - for (double i = 1; i <= 10; i++) { - destinationOffsets.add(Offset( - max(0, random.nextDouble() * size.width - childWidth), - max(0, random.nextDouble() * size.height - childHeight))); + if (initialCalculation == false) { + var rng = new Random(); + for (int i = 1; i <= 30; i++) { + randomOffsets.add(Offset( + (i ~/ 6) * childWidth, ((5 - 4) / 2 + (i % 6)) * childWidth)); + } + print("lengfht of the offset...${randomOffsets.length}"); + for (int i = 1; i <= 10; i++) { + int min = 1, max = randomOffsets.length - 1; + int randomIndex = min + rng.nextInt(max - min); + print("object..... offsets.....randomIndex...$randomIndex"); + finalOffsets.add(randomOffsets[randomIndex]); + randomOffsets.removeAt(randomIndex); intialOffsets.add(Offset((i % 2) * size.width, (i % 3) * size.height)); -// Offset( - // (i ~/ 4) * childWidth, ((5 - 4) / 2 + (i % 4)) * childWidth) - // Offset(max(0, random.nextDouble() * size.width - childWidth), - // max(0, random.nextDouble() * size.height - childHeight)); } for (int i = 0; i < 10; i++) { widgets.add(AnimatedPositioned( @@ -55,10 +58,10 @@ class TappingGameState extends State { return GestureDetector( onTap: () { - if (countTheClick < widget.choice && clickOnScreen) { - withoutClick = true; + if (trackTheClick < widget.choice && clickOnScreenDelay) { + initialCalculation = true; setState(() { - clickOnScreen = false; + clickOnScreenDelay = false; }); _buildMovingWidget(); } @@ -83,15 +86,15 @@ class TappingGameState extends State { void _buildMovingWidget() { setState(() { setState(() { - intialOffsets.removeAt(countTheClick); - intialOffsets.insert(countTheClick, destinationOffsets[countTheClick]); - widgets.removeAt(countTheClick); + intialOffsets.removeAt(trackTheClick); + intialOffsets.insert(trackTheClick, finalOffsets[trackTheClick]); + widgets.removeAt(trackTheClick); widgets.insert( - countTheClick, + trackTheClick, AnimatedPositioned( duration: Duration(milliseconds: 1500), - left: intialOffsets[countTheClick].dx, - top: intialOffsets[countTheClick].dy, + left: intialOffsets[trackTheClick].dx, + top: intialOffsets[trackTheClick].dy, child: Padding( padding: const EdgeInsets.all(8.0), child: SizedBox( @@ -100,21 +103,21 @@ class TappingGameState extends State { child: Card( color: Colors.blue, elevation: 10.0, - child: Center(child: Text("${countTheClick + 1}..data"))), + child: Center(child: Text("${trackTheClick + 1}..data"))), ), ), )); - if (countTheClick == widget.choice) { + if (trackTheClick == widget.choice) { setState(() { widget.onGameUpdate(score: 2, max: 2, gameOver: true, star: true); }); } - countTheClick = countTheClick + 1; + trackTheClick = trackTheClick + 1; }); }); new Future.delayed(const Duration(milliseconds: 1500), () { setState(() { - clickOnScreen = true; + clickOnScreenDelay = true; }); }); }