Skip to content

Commit ac63a93

Browse files
committed
.
1 parent bb33836 commit ac63a93

File tree

2 files changed

+35
-38
lines changed

2 files changed

+35
-38
lines changed

lib/snake_pixel.dart

+20-23
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class _SnakeGameState extends State<SnakeGame> {
3030
@override
3131
void initState() {
3232
WidgetsBinding.instance.addPostFrameCallback((_) {
33+
_updateGridDimensions();
3334
showGameStartDialog(context);
3435
});
3536
resetGame();
@@ -413,10 +414,7 @@ class _SnakeGameState extends State<SnakeGame> {
413414
break;
414415
}
415416

416-
if (nextHead >= 0 &&
417-
nextHead < squaresPerRow * squaresPerCol &&
418-
!snake.contains(nextHead) &&
419-
!visited.contains(nextHead)) {
417+
if (nextHead >= 0 && nextHead < squaresPerRow * squaresPerCol && !snake.contains(nextHead) && !visited.contains(nextHead)) {
420418
visited.add(nextHead);
421419
queue.add(nextHead);
422420
previousMove[nextHead] = direction;
@@ -572,34 +570,33 @@ class _SnakeGameState extends State<SnakeGame> {
572570

573571
// 根据屏幕尺寸动态设置网格的维度,保证充满整个屏幕
574572
void _updateGridDimensions() {
575-
final double screenWidth = MediaQuery.of(context).size.width;
576-
final double screenHeight = MediaQuery.of(context).size.height;
577-
578-
// 设定每个方格的最小宽高
579-
const double gridSize = 22.0; // 每个方格的大小
573+
setState(() {
574+
final double screenWidth = MediaQuery.of(context).size.width;
575+
final double screenHeight = MediaQuery.of(context).size.height;
580576

581-
// 计算每行和每列能容纳的方格数
582-
squaresPerRow = (screenWidth / gridSize).floor();
583-
squaresPerCol = (screenHeight / gridSize).floor();
577+
// 设定每个方格的最小宽高
578+
const double gridSize = 22.0; // 每个方格的大小
584579

585-
// 如果屏幕方向是横屏,调整网格方向
586-
if (screenWidth > screenHeight) {
587-
// 横屏:确保每行的方格数量多,列数少
580+
// 计算每行和每列能容纳的方格数
588581
squaresPerRow = (screenWidth / gridSize).floor();
589582
squaresPerCol = (screenHeight / gridSize).floor();
590-
} else {
591-
// 竖屏:确保每列的方格数量多,行数少
592-
squaresPerRow = (screenWidth / gridSize).floor();
593-
squaresPerCol = (screenHeight / gridSize).floor();
594-
}
583+
584+
// 如果屏幕方向是横屏,调整网格方向
585+
if (screenWidth > screenHeight) {
586+
// 横屏:确保每行的方格数量多,列数少
587+
squaresPerRow = (screenWidth / gridSize).floor();
588+
squaresPerCol = (screenHeight / gridSize).floor();
589+
} else {
590+
// 竖屏:确保每列的方格数量多,行数少
591+
squaresPerRow = (screenWidth / gridSize).floor();
592+
squaresPerCol = (screenHeight / gridSize).floor();
593+
}
594+
});
595595
}
596596

597597
@override
598598
Widget build(BuildContext context) {
599599
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);
600-
601-
_updateGridDimensions();
602-
603600
return GestureDetector(
604601
onTap: () {
605602
if (!isPlaying) startGame();

pubspec.lock

+15-15
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ packages:
3737
dependency: transitive
3838
description:
3939
name: collection
40-
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
40+
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
4141
url: "https://pub.dev"
4242
source: hosted
43-
version: "1.18.0"
43+
version: "1.19.0"
4444
cupertino_icons:
4545
dependency: "direct main"
4646
description:
@@ -79,18 +79,18 @@ packages:
7979
dependency: transitive
8080
description:
8181
name: leak_tracker
82-
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
82+
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
8383
url: "https://pub.dev"
8484
source: hosted
85-
version: "10.0.5"
85+
version: "10.0.7"
8686
leak_tracker_flutter_testing:
8787
dependency: transitive
8888
description:
8989
name: leak_tracker_flutter_testing
90-
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
90+
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
9191
url: "https://pub.dev"
9292
source: hosted
93-
version: "3.0.5"
93+
version: "3.0.8"
9494
leak_tracker_testing:
9595
dependency: transitive
9696
description:
@@ -143,7 +143,7 @@ packages:
143143
dependency: transitive
144144
description: flutter
145145
source: sdk
146-
version: "0.0.99"
146+
version: "0.0.0"
147147
source_span:
148148
dependency: transitive
149149
description:
@@ -156,10 +156,10 @@ packages:
156156
dependency: transitive
157157
description:
158158
name: stack_trace
159-
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
159+
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
160160
url: "https://pub.dev"
161161
source: hosted
162-
version: "1.11.1"
162+
version: "1.12.0"
163163
stream_channel:
164164
dependency: transitive
165165
description:
@@ -172,10 +172,10 @@ packages:
172172
dependency: transitive
173173
description:
174174
name: string_scanner
175-
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
175+
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
176176
url: "https://pub.dev"
177177
source: hosted
178-
version: "1.2.0"
178+
version: "1.3.0"
179179
term_glyph:
180180
dependency: transitive
181181
description:
@@ -188,10 +188,10 @@ packages:
188188
dependency: transitive
189189
description:
190190
name: test_api
191-
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
191+
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
192192
url: "https://pub.dev"
193193
source: hosted
194-
version: "0.7.2"
194+
version: "0.7.3"
195195
vector_math:
196196
dependency: transitive
197197
description:
@@ -204,10 +204,10 @@ packages:
204204
dependency: transitive
205205
description:
206206
name: vm_service
207-
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
207+
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
208208
url: "https://pub.dev"
209209
source: hosted
210-
version: "14.2.5"
210+
version: "14.3.0"
211211
sdks:
212212
dart: ">=3.5.4 <4.0.0"
213213
flutter: ">=3.18.0-18.0.pre.54"

0 commit comments

Comments
 (0)