snake
unknown
dart
3 years ago
1.2 kB
4
Indexable
import 'dart:math'; import 'package:flutter/foundation.dart'; import 'game.dart'; class Snake extends GameState { Snake() : super() { // init the place where body and food at the beginning of game. // feel free to modify it , but don't keep it uninitialized // or you will get an runtime error for uninitializing. :) initGame(); } @override void initGame() { body = [ [0, 0] ]; direction = [0, 1]; generateFood(); } void generateFood() { var rnd = Random(); food = [rnd.nextInt(squarePerRows), rnd.nextInt(squarePerCols)]; } void move() { List<int> newHead = [body[0][0] + direction[0], body[0][1] + direction[1]]; if (listEquals(newHead, food)) { body.add([0, 0]); generateFood(); } for (int i = body.length - 1; i > 0; i--) { body[i] = body[i - 1]; } body[0] = newHead; } @override void updateGame() { move(); } @override bool isGameOver() { for (var pixel in body) { if (pixel[0] < 0 || pixel[0] >= squarePerRows) return true; if (pixel[1] < 0 || pixel[1] >= squarePerCols) return true; } return false; } }
Editor is loading...