From 666c27edf110037ba6a9c8c0f8f05a0bbc96487e Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Wed, 24 Dec 2014 15:09:04 +0300 Subject: [PATCH] tetris example update --- README.md | 5 ++++- examples/tetris/src/main.d | 28 ++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 992784bc..615e6830 100644 --- a/README.md +++ b/README.md @@ -108,12 +108,15 @@ Win32 builds * Executable size for release Win32 API based build is 830K. -Build and run using DUB: +Build and run demo app using DUB: git clone https://github.com/buggins/dlangui.git cd dlangui dub run dlangui:example1 --build=release +Run Tetris game example + + dub run dlangui:tetris --build=release To develop using Visual-D, download sources for dlabgui and dependencies into some directory: diff --git a/examples/tetris/src/main.d b/examples/tetris/src/main.d index d43fa42e..820eabd8 100644 --- a/examples/tetris/src/main.d +++ b/examples/tetris/src/main.d @@ -281,6 +281,32 @@ class CupWidget : Widget { } } + bool rotate(int delta) { + int newOrientation = (_currentFigureOrientation + 4 + delta) & 3; + if (isPositionFree(_currentFigure, newOrientation, _currentFigureX, _currentFigureY)) { + if (_state == CupState.FallingFigure && !isPositionFree(_currentFigure, newOrientation, _currentFigureX, _currentFigureY - 1)) { + if (isPositionFreeBelow()) + return false; + } + _currentFigureOrientation = newOrientation; + return true; + } + return false; + } + + bool move(int deltaX) { + int newx = _currentFigureX + deltaX; + if (isPositionFree(_currentFigure, _currentFigureOrientation, newx, _currentFigureY)) { + if (_state == CupState.FallingFigure && !isPositionFree(_currentFigure, _currentFigureOrientation, newx, _currentFigureY - 1)) { + if (isPositionFreeBelow()) + return false; + } + _currentFigureX = newx; + return true; + } + return false; + } + protected void onAnimationFinished() { switch (_state) { case CupState.NewFigure: @@ -288,7 +314,6 @@ class CupWidget : Widget { setState(CupState.HangingFigure, 75); break; case CupState.FallingFigure: - // TODO if (isPositionFreeBelow()) { _currentFigureY--; setState(CupState.HangingFigure, 75); @@ -300,7 +325,6 @@ class CupWidget : Widget { } break; case CupState.HangingFigure: - // TODO setState(CupState.FallingFigure, 25); break; case CupState.DestroyingRows: