summaryrefslogtreecommitdiff
path: root/Games
AgeCommit message (Collapse)Author
2020-11-10Breakout: Add simple menu and about dialog :^)Andreas Kling
2020-11-10Breakout: Set the window iconAndreas Kling
2020-11-10Breakout: Turn off double-bufferingAndreas Kling
2020-11-10Breakout: Change ball x velocity depending on where it hits paddleAndreas Kling
This makes the game less deterministic and more fun. The "physics" definitely feel a little goofy, and I'm sure they can be greatly improved, but still it's already better. :^)
2020-11-10Breakout: Stop paddle movement when resetting itAndreas Kling
2020-11-10Breakout: Use floating point coordinatesAndreas Kling
2020-11-09Breakout: Use the pending new ball rect for brick collision testingAndreas Kling
Otherwise the ball will bounce one frame *after* hitting a brick.
2020-11-09Breakout: Add a very simple breakout game :^)Andreas Kling
Made with HackStudio! This needs some love to feel like a proper game, but the basics are here.
2020-11-04Minesweeper+Snake: load config file before calling unveil()Brendan Coles
2020-11-02Games: Use pledge and unveilBrendan Coles
2020-11-01Games: Use GUI::Icon::default_icon to set application iconBrendan Coles
2020-10-31LibGfx: Move FontDatabase from LibGUI to LibGfxAndreas Kling
Not sure why I put this into LibGUI in the first place.
2020-10-31Applications: Use application icons for dialog windowsBrendan Coles
2020-10-26Solitaire: Play animation when starting a new gameTill Mayer
2020-10-26Solitaire: Refactor CardStack layout codeTill Mayer
2020-10-26Snake: Use the system default fixed-width fontAndreas Kling
Instead of looking one up by name.
2020-10-25LibGfx+LibGUI+Clients: Make fonts findable by their qualified nameAndreas Kling
The qualified name of a font is "<Family> <Size> <Weight>". You can get the QN of a Font via the Font::qualified_name() API, and you can get any system font by QN from the GUI::FontDatabase. :^)
2020-10-25LibCore: Rename File::ShouldCloseFile{Description => Descriptor}Linus Groh
From https://youtu.be/YNSAZIW3EM0?t=1474: "Hmm... I don't think that name is right! From the perspective of userspace, this is a file descriptor. File description is what the kernel internally keeps track of, but as far as userspace is concerned, he just has a file descriptor. [...] Maybe that name should be changed." Core::File even has a member of this enum type... called m_should_close_file_descriptor - so let's just rename it :^)
2020-10-17Games: Use new format functions.asynts
2020-10-03Everywhere: Fix more typosLinus Groh
2020-09-25Meta+Games: Make clang-format-10 cleanBen Wiederhake
2020-09-18Minesweeper: Fix inverted Single-Click Chording settingPeter Elliott
This was introduced by 705cee528a803b1671d16eeaf222d3318708500b, where the '!' was copied from the previous implementation, but the behavior was not
2020-08-27Base: Create /res/icons/solitaire/ and relocate solitaire assetsthankyouverycool
2020-08-27Meta: Force semi-colon after MAKE_AK_NONXXXABLE()Ben Wiederhake
Before, we had about these occurrence counts: COPY: 13 without, 33 with MOVE: 12 without, 28 with Clearly, 'with' was the preferred way. However, this introduced double-semicolons all over the place, and caused some warnings to trigger. This patch *forces* the usage of a semi-colon when calling the macro, by removing the semi-colon within the macro. (And thus also gets rid of the double-semicolon.)
2020-08-23Chess: Allow resizing Chess using resize_aspect_ratio(1,1)Peter Elliott
2020-08-23Chess: Optionaly display coordinates at edge of boardPeter Elliott
2020-08-21ChessEngine: Add ChessEnginePeter Elliott
This engine is pretty bad, but doesn't let itself get checkmated
2020-08-21Chess: Add support for UCI enginesPeter Elliott
2020-08-21Chess: Refactor game logic into LibChess for use in enginesPeter Elliott
In the future UCI protocol stuff will also go into LibChess.
2020-08-21Chess: Add serialization of moves and squaresPeter Elliott
2020-08-21Chess: Fix generation of promotion movesPeter Elliott
2020-08-212048: Make board size and target tile configurableAnotherTest
This adds a "settings" option that allows the user to configure the board size and target tile, and optionally save them to a config file. Closes #3219.
2020-08-212048: Do not allow the creation of games with invalid board sizesAnotherTest
The logic only works with nxn grids, so no need to take separate row_size/column_size arguments.
2020-08-182048: Tweak default window sizeSergey Bugaev
As requested by @nico
2020-08-182048: Generate more "2" tilesSergey Bugaev
This is how the original game does it.
2020-08-182048: Move score to a status barSergey Bugaev
See how straightforward this was? That's because, thanks to the separation between the model and the view, we can tweak the view without modifying the model in any way.
2020-08-182048: Separate game logic from the view :^)Sergey Bugaev
Look Ali, it's simple: * The *model* (in many cases, an instance of GUI::Model, but it doesn't have to be) should implement the "business logic" (in this case, game logic) and should not concern itself with how the data/state is displayed to the user. * The *view*, conversely, should interact with the user (display data/state, accept input) and should not concern itself with the logic. As an example, a GUI::Button can display some text and accept clicks -- it doesn't know or care what that text *means*, or how that click affects the app state. All it does is it gets its text from *somebody* and notifies *somebody* of clicks. * The *controller* connects the model to the view, and acts as "glue" between them. You could connect *several different* views to one model (see FileManager), or use identical views with different models (e.g. a table view can display pretty much anything, depending on what model you connect to it). In this case, the model is the Game class, which maintains a board and implements the rules of 2048, including tracking the score. It does not display anything, and it does not concern itself with undo management. The view is the BoardView class, which displays a board and accepts keyboard input, but doesn't know how exactly the tiles move or merge -- all it gets is a board state, ready to be displayed. The controller is our main(), which connects the two classes and bridges between their APIs. It also implements undo management, by basically making straight-up copies of the game. Isn't this lovely?
2020-08-182048: Automatically pick an appropriate font sizeSergey Bugaev
2020-08-182048: Use the original colorsSergey Bugaev
2020-08-182048: Tweak cell metricsSergey Bugaev
This makes the game look closer to the original. It also fixes a weird thing where cells were displayed in a wrong order (as if mirrored or something), and to accommodate for that keyboard actions were also mixed up. Now it's all working as intended.
2020-08-17Solitaire: Rename "Restart game" menu item to "New game"Tibor Nagy
Also adding a shortcut (F2) to make it consistent with other games.
2020-08-17Games: Add missing separators to the application menusTibor Nagy
2020-08-17Chess: Add Help menuitemAbu Sakib
2020-08-17Chess: Uninitialized member in PromotionalDialog, found by CoverityBrian Gianforcaro
2020-08-15Chess: Add new ways to draw.Peter Elliott
new ways: Insufficent material Threefold/Fivefold repitition 50 move/75 move rule
2020-08-15Chess: Add pawn promotion to any piecePeter Elliott
2020-08-15Chess: Add En-passantPeter Elliott
2020-08-15Chess: Add menu options for setting board theme and piece setPeter Elliott
2020-08-15Chess: Highlight last movePeter Elliott
2020-08-15Chess: Add win/draw conditions, and display them.Peter Elliott