Giter Club home page Giter Club logo

planes's Introduction

planes

Variant of battleships game implemented with Qt, C++ for desktop and with Java and Kotlin for Android.

3 versions of the game of Planes are implemented with Qt: PlanesWidget, first naive version, PlanesGraphicsScene an implementation using QGraphicsScene, PlanesQML an implementation using QML. These use a game engine programmed in C++.

The Android application is currently developed in Kotlin. The older version of the Android application in Java still exists in the repository for reference.

Starting with version 0.3.16 for the desktop version and version 0.4.0 for the Android app, a multiplayer module is included.

In the releases section you will find a detailed documentation of the C++ part of the project. (TheGameOfPlanes.pdf)

alt text

installation instructions

  1. Go to the Releases page : https://github.com/xxxcucus/planes/releases

For Windows:

  1. Unzip Planes.x.y.z_windows.zip file to a folder on your computer
  2. In the bin folder of the unzipped folder run one of the binaries PlanesQML.exe, PlanesGraphicsScene.exe, PlanesWidget.exe

For Linux

The easiest way is to use the Planes.x.y.z-x86_64.AppImage or Planes_Multiplayer.x.y.z-x86_64.AppImage directly on your Linux machine. Alternatively you could:

  1. Download Planes.x.y.z_linux.tar.gz to a folder on your computer.
  2. Extract the installation folder from the archive with tar -xvf Planes.x.y.z_linux.tar.gz
  3. Execute one of the scripts PlanesWidget.sh, PlanesGraphicsScene.sh, PlanesQML.sh

For Android

  1. Download Planes.x.y.y_android.apk to the Download folder on your device.
  2. With the file explorer navigate to the saved .apk and open it.

or get the app directly from Google Play Store: https://play.google.com/store/apps/details?id=com.planes.android

compilation instructions

For the C++ projects PlanesWidget, PlanesGraphicsScene and PlanesQML, you will find the compilation and installation instructions in the Appendix of the pdf documentation - see the Releases page (available after Release 0.3.1)

tests

The C++ projects include unittests. These are grouped under 2 CMake projects: singleroundtests and commobjtests. To run the tests under Linux, install the software and then run the script runTests.sh. To run the tests under Windows run the corresponding executables found in the bin folder of the installation. The Android project include the equivalent of the singleroundtests as well as instrumented tests for fragments. You can run them from inside the Android Studio.

tutorials

  1. Multi-Player Planes: https://youtu.be/mlSvZREBTwA
  2. Single-Player Planes: https://youtu.be/N2Cg8eflCxM
  3. Positioning of Planes: https://youtu.be/qgL0RdwqBRY
  4. Guessing Planes Positions: https://youtu.be/CAxSPp2h_Vo

@xxxcucus's Holopin board

planes's People

Contributors

albanobattistella avatar detherminal avatar iunaiuna avatar khuirul-huda avatar tc2r1 avatar temp-byte avatar xxxcucus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

planes's Issues

Verify italian translations

An italian translation for the Android app was made. Please verify the texts for potential errors. The concerned source file is:
planes\java\PlanesAndroid\app\src\main\res\values-it\strings.xml

Confusing loading state in Battery Saver

Dear developer,

I noticed that, when I enable Battery Saver on Android 8.1, the indeterminate ProgressBars in the app are not properly shown. This is a known problem in Android API level <28, see e.g. this StackOverflow question. Battery Saver disables animations, also on progress bars on these versions. This is quite confusing because the loading state is not properly represented and the icon shown resembles a 'reload' indicator. It is fixed in later Android versions, where progress bars do appear and animate.

Looking at the code, indeterminate progress bars are created here:

className='com.planes.android.LoaderActivity', lineNumber=45
className='com.planes.android.MainActivity', lineNumber=73

To fix this issue, one can check ValueAnimator.areAnimatorsEnabled() and provide a different UI element, such as a text label, when animations are disabled.

I also recorded two videos, showing the issue in practice:

https://github.com/xxxcucus/planes/assets/165037835/891b7aef-4eea-42cd-9ddf-f93f992b08ab
https://github.com/xxxcucus/planes/assets/165037835/25abed47-3466-4215-ba70-5f4ccd53d64f

Create an .xml layout for the "Delete User" function

This layout should be similar in functionality with the layout for "Logout" screen. When the user is not logged in it should say that the user is not logged in and the "Delete User" Button should not be active. When the user is logged in the same text indicating that the user had logged in the "Logout" screen should be displayed and the button should be active.

Define your own theme for Planes Android

In the styles.xml file I have defined MyAppTheme which contains all the colors of the Android app.
In the colors.xml I added all colors of the material theme.
Define your own theme distinct from MyAppTheme, such that later the user can switch between themes in the app.

Make the theme of the Android app customizable

The user should be able to choose between a few themes.
The option should be available in the Settings fragment for the single player and multi player settings.
New setting should apply immediately.

Italian translations needed

Hello. Please translate the following texts in Italian for the Android Planes App:

"New User? Register Here!"

"Long touch to rotate the selected plane."

"The logo of the game, the store graphics and the splash screen illustration were created by Alexandru Vintilescu."

"Reset Board"

"Contributions from GitHub are listed in the GitHub page of the project. "

"Touch on the opponent's board to guess where the opponent's planes are."

Thank you!

Feature Request: Allow "Flagging" Tiles

Allowing players to "flag" or otherwise mark tiles (a la Minesweeper) to denote the location of part of a plane would allow them to better visualise the layout of the enemy on the map, which would help offset what (at times) feels like an abnormally tough opponent. Note that players can (and presumably will) do this already mentally. This is simply to reduce that burden on the player.

On Android, either a long press or a button to toggle the placement of flags would work.
On PC, either a right click (if that's not being used by something, I've not tried it on desktop) or a button to toggle would also work.

(Fun game to pass the time with by the way, cheers)

EDIT: Fixed typo, small readability improvement.

Add Button "Connect to game" in Login Page

A button "Connect to game" should be shown in the right lower corner of the Login screen. It should be active when a user is logged in.
After successfull Login a snack with the action "Connect to game" should be shown.

Turkish translations needed

In order to create a PlayStore page in turkish I need the following translations:

"Planes Android is a variant of the Battleships game for Android"

"Position your planes on your game board and guess where the computer has hidden its before it guesses where you have hidden yours.

The open-source app is also available for Windows and Linux and is currently translated in english, spanish, german, italian, romanian, polish and turkish.
"

"To see tutorials about how the game is played follow the links"

"To see a preview of the multiplayer version see:"

Verify german texts for Android app

I wrote the texts myself but as I am no native German speaker I would like to have some feedback about the german texts.
The path to the texts is: app\src\main\res\values-de\strings.txt

Add difficulty levels

The game should allow the customization of the weights of the next move decision algorithm. Additionally it should allow to choose to show the position of a killed plane.

Create tutorial videos for Android app

Currently there no tutorial videos for the Android app. The desktop version of the app is presented instead.

Tutorials needed:

  • plane positioning tutorial (single player and multiplayer app)
  • guessing plane positions
  • single player game
  • multiplayer game

Tutorial language should be English.

Create About Activity in Android App

Add the credits, the copyright license and the current release version to a About mini-activity.
When navigating with back the game should revert to the state before calling the mini-activity.
Should look good on tablets and phones as well as in vertical and horizontal layout.

new issue

Salut,

Acesta nu este tocmai un issue.

Vroiam doar să-ți mulțumesc că ai implementat jocul ăsta pe Android și că l-ai făcut și open source și l-ai publicat pe F-Droid.

Puțin fac asta. Dacă vrei, poți să adaugi și un link de donații pe F-droid, pentru cei care vor dori să-ți doneze.

Poți închide issue-ul ăsta

Add link to Register screen from Login screen Android App

I would like to have the possibility to jump from the Login screen directly to the Register screen.
There should be a button in the Login screen with the following text:
"New user? Please register" and by clicking on it one should be redirected to the
Register screen.
Changes should be made to the portrait and landscape layouts for the login.

Draws should be recognised

When playing if the player and the computer both find the third plane simultaneously, the victory is given to the computer, rather than being recognised as a draw.

Feature Request: Implement "Draw" System

Often-times the player and computer can kill each other on the same turn. However, this defaults to a Computer Wins, which is player-unfriendly - contextually, either the player is "playing first" or both are playing at the same time, and thus it should either result in either a Player Wins, or in a Draw. Personally, I find the idea of a Draw more appealing.

Turkish Translation needed

Please translate the following text in Turkish:

"Touch on the opponent's board to guess where the opponent's planes are."

Thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.