From week 5 to week 12 you will work (improve, extend) on one of these projects
Bloc is a new graphical library
- https://www.slideshare.net/esug/bloc-for-pharo-current-state-and-future-perspective
- https://www.slideshare.net/esug/news-on-bloc-for-pharo
- http://www.github.com/pharo-graphics/Bloc
- Light Beamer
- Sudoku
- 2048
- Memory
- Snake
- Tetris
- picross (nonogram)
- SlideOut
- Quinto
- Game of Life
- SameGame
- Taquin
- Maze generator
- Bomberman
- Puissance4 (for this one we will also define a little AI that will be able to compete against humans :)
Myg is a framework to build games based on Bloc. A Miner, Sokoban and Takuzu have been built on top of it. It provides ways to build levels and other facilities.
Author fullName: 'No'.
Metacello new
repository: 'github://Ducasse/Myg:v1.0.1/src';
baseline: 'Myg';
onConflictUseLoaded;
load.
You will just need to execute Sokoban open
to open the Sokoban, or do the same with MineSweeper
or Takuzu
.
For more information, you can go to the website of the project: https://github.com/ducasse/myg
Bloc is a graphics toolkit and framework that supports advanced 2D rendering an common user interactions such as clicks and keyboard events. Myg is based on Bloc. This means that some actions will require understanding how Bloc works, how to render your game and how to interact with the user to make your game usable.
Besides the base Bloc code, you can find some other examples in the package below
Metacello new
baseline: 'BlocTutorials';
repository: 'github://pharo-graphics/Tutorials:dev-1.0/src';
load
There is one tutorial showing how to build a simple memory game and one 2048 game (with a prototype of skins for Bloc).
There are also some other games:
- a bomberman (clement bera + pdf in programmez)
- a breakout
- an isometric game check discord channel
- MetaBorg defines a tetris, pacman, sokoban
-
Mandatory: give us read access to your code
- Add a
Readme.md
file in your group's directory, next to where you put your weekly repports. - Add in your
Readme.md
file the link to your repository. - Make sure your repository is public so we can see it
- Add a
-
Optional: give us write access to your code
- Share your repository with us the teachers, so we will have write access to your code
All the instructions of this section are Mandatory.
Add in your repository a Readme.md
file with the following information:
- Installation instructions: what should we download to run your project? in what order? Please test these installation instructions and make sure everything works
- Usage instructions: What should we do to run your project? How do we use it? How do we interact with it?
- Where is your code/tests located? Should we take care of something?
Add an extra section with Design decisions. Use this section to explain things that are not visible in the code:
- Why is the code like this?
- Why is this part of the code more tested than the other?
- Where did you put the priorities?
- Where did you use (or not) design patterns in the code and why?
- ...
We are going to look in your project, in different levels:
-
First level: functional -- le minimum syndical
- Does it install?
- Does it run?
- Are there tests?
- Are the tests green?
-
Second level: code quality
- Is the code readable?
- Did you design your test cases?
- How did you use the tools that were at your disposal? Myg, Bloc, Test framework...
- How did you apply the concepts we saw in class? Design patterns, inheritance, delegation, polymorphism...
-
Cross-cutting -- soft skills:
- Asking for help and questions in mailing lists/discord/discussion channels
- Answering in mailing lists/discord/discussion channels
- Opening entries in issue/bug trackers