Install the .apk file provided which is located inside the android folder and is named "android-release.apk".
(In more detail inside the file UML.pdf located in the root.)
Singleton: Ensure a class has only one instance, and provide a global point of access to it. In our project we use it in the controller and model classes.
State: Allow an object to alter its behavior when its internal state changes. The object will appear to change its class. In our project we use on GameScreen because we have a stage when the players have to choose an option and then another stage that will draw the result of the match between the players' choices. So, in the same class, the methods can change their behaviour.
Template Method:Define the skeleton of an algorithm in an operation, deferring some steps to client subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure. In our project we use it in the abstract classes EntityModel, EntityView and EntityButton.
Observer: Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. Encapsulate the core (or common or engine) components in a Subject abstraction, and the variable (or optional or user interface) components in an Observer hierarchy. In our project we use it as we apply the Model-View-Controller architecture pattern and, consequently, the View corresponds to the Observer.
-
Code structure planning;
-
Communication between sockets;
-
Adjust the textures to the right coordinates on the screen.
-
Do a lot of research as new concepts come up;
-
See sample code extracts as a good way to learn;
-
Write the plan on paper before starting coding;
-
Ask for help, but always try to resolve it by yourself at first;
-
Collaborating with people from others courses to help with the design of the app.
Around 120 hours.
50-50
Splash Screen.
You can choose to start a Party (game) or to join one.
If you have pressed “START PARTY” you IP is shown and you also need to choose the number of sets that your game will have.
If you have pressed “JOIN PARTY” you have to insert your opponent IP to join his party (game).
As the game starts you have to choose between rock, paper or scissors (one of the three buttons).
After you and your opponent choose one option, you have to shake your phone 3 times so yours options are launched in both screens (and then collide).
If you win a set you are marked with X, otherwise you are marked with a check mark.
If it’s a tie, you have to play a thematic mini game against you opponent. Rock Mini Game: Tap the rocks to destroy them. They can be empty or have a coin. Earn as much coins as you can (each coin is one point).
Paper Mini Game: Drag off a roll of toilet paper
Scissors Mini Game: Draw the symmetry as accurately as possible.
Every mini game has a limited time to be concluded. You can also see a quick explanation of the mini games in the Main Menu if click on the button in the upper right corner:
Singleton: Ensure a class has only one instance, and provide a global point of access to it. In our project we use it in the controller and model classes.
State: Allow an object to alter its behavior when its internal state changes. The object will appear to change its class. In our project we use on GameScreen because we have a stage when the players have to choose an option and then another stage that will draw the result of the match between the players' choices. So, in the same class, the methods can change their behaviour.
Template Method:Define the skeleton of an algorithm in an operation, deferring some steps to client subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure. In our project we use it in the abstract classes EntityModel, EntityView and EntityButton.
Observer: Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. Encapsulate the core (or common or engine) components in a Subject abstraction, and the variable (or optional or user interface) components in an Observer hierarchy. In our project we use it as we apply the Model-View-Controller architecture pattern and, consequently, the View corresponds to the Observer.
1 To the correct transition between screens, depending on the button pressed;
2 To the correct attribution of points to the winner player;
3 To the game’s physic (correct objects’ trajectory taking into account their weight, the clash between two objects whose coordinates intersect, etc.);
4 To the correct socket creation nad correct connection of the “cliente” (second player) to the socket created by the “server” (first player);
5 To the mobile phone’s shake correct detection.
Made by @afonsojramos and @BeatrizBaldaia