Tuesday, 22 October 2019

Grand Knight History Project

Grand Knight History Project

Background Overview

After playing game called Grimoire by Vanillaware during my high-school years , I'm simply hook by the graphic and the art direction by George Kamitani. I found out they releasing a new game called Grand Knight History for PSP. However after translation issue the game does not have a English speaker. After couple of years, I able to play the game due to modders mod game to have a English translation. After a few days and completing few side quest, I find out the position does not play a role on the overall gameplay. Due to this reason I try create this side project is because
  • I wanted to create a turn base mechanic that require more strategy and planing.
  • To apply my base experience to this game development.

Case study

The following games the example of case study I did during this development.

Pokemon Game

A very popular turn base game, however since the first gen (generation) the game play does not evolve. In the latest iteration they include a double battle, and a group battle.
Pros Cons
  1. Special ability, example if a Pokemon have a levitation attribute. Most ground attack does not effect them. It play a huge effect when choosing Pokemon to battle
  2. Night and Day system.Different Pokemon encounter will appear
  1. Most battle become a weakness exploitation. At the end, the gameplay become whose Pokemon have a better weakness exploiter rather strategic planning
  2. Lack of player agency during the battle phase. Creating a dull gameplay
  3. A few item is over power example full heal. It create balancing issue
  4. Although player able carry 6 Pokemon in one time, the combination does not play a huge impact due to 1 on 1 system

Darkest Dungeon

A kickstarter game by Red Hook Studio, a Lovecraft horror inspired art design and game mechanics. It is a 4v4 grid-turn base RPG game, where the player control a party of a character.
Pros Cons
  1. Stressful meter play huge role during exploration. It create a situation to continue or stop exploration same feeling occur when exploring Dark Souls (Soulike Game) Game
  2. Character position impact during battle phase, example few attack can be use if character at the right position.
  3. Each battle feel high stakes due to character cannot revive
  4. Camping feature creating a good immersion/lore gameplay
  5. Beautiful art style
  6. Small number attribute making more easier to understand.
  1. In certain situation, RNG able break player strategies. Thus this can effect player strategies without player input
  2. Abounded of texts during battle phase
  3. In item/attack description, using different type of percentage
  4. Grinding character to replace the old character

Persona Series

A RPG dungeon crawler game from Atlus, created by sub-division Persona Team. A high school drama /date simulator/fantasy game genre, where the player take control a student live to take battle with fantasy monster.
Pros Cons
  1. Weakness play a huge role on the character and a knockdown system create more strategies for the player. I would say it is a better system then Pokemon system.
  2. The 4 v 8 system create more creative group composition. 1 Character able be dedicate support,physical dealer and much more. With a substitute system, each group composition play differently
  3. In each iteration, Persona game give player easier ways to create a new Persona. Modify attribute to create a better Persona
  4. Each dungeon have a different art style and have a different soundtrack (Persona 4 and Persona 5). Making exploration more intriguing. Personal favorite Nanako dungeon(Heaven)
  5. Skip option.When battle a low level, player able skip using a skip button to fast forward
  6. Player can control other character or allow AI to control it.
  1. Skill name convention could be more easier

Suggestion Mechanics

The following is a suggestion mechanics to be implement.
  1. Create a combo system. If a character able deal more than one hit, they will receive a extra action point (AP).
  2. Skill that have vertical and horizontal attack. Example in Darkest Dungeon, this allow battle to finish much faster while gaining more EXP due to number of enemy vs battling a single enemy.
  3. Allow character save AP for more powerful attack. Rather each character have their own mana pool, all character share the same mana pool (in this project called AP (Action Point)). This allow player to bank/skip character move to other option.
  4. Player require move enemy character to a certain position to be attack more efficiently.

Project Planing

The following is the project plan for this project.At the end I hope I able create a alpha/proof of concept on the game mechanic I'm creating

Days Development
Day 1 For project planing, I try create a simple design for grid base RPG game. The first thing I design, how gridlayout component able react to the player and how to phase able switch to other phase.
Day 2 and Day 3 Im start create gridComponent, columnComponent and gridlayoutComponent, focusing on it since all three module work close together
Day 4 On day 3, I start create character module, Character ui, attribute and etc. Create character skill component as a temp skill holder.On day 3, I start create character module, Character ui, attribute and etc.
Day 5 On the same time, I create the main program application. In match component will handle when the required process to be called.
Day 6 and 7 On the 6 day, I continue upgrade the overall game UI(character UI,Player Ap,Main Title). Beside that I develop the phase module, the purpose of the phase module is to create a handler on the each phase.
Day 8 I send to my friend to do a quick black box testing.
Day 9 and 10 To conclude the development phase, I ended with the documentation. Base on the QC report, I arrange with bugs with priority and non priority.

Project goals

  • Create a proof of concept
  • Create a an interesting game mechanic for RPG scenario

Modules/Component

Gridlayout component

The gridlayout component is where the character will be stationary. On enemy side will be 4x4 while on the player side will be 4x2. The reason enemy is have more bigger gridlayout is allowing the player to get more combo to retrieve more AP. The gridComponent is an intractable component to the user. In prefab (unity level), 4 gridcomponents is store inside a columnComponents, after that all 4 columncomponents then store into 1 gridlayout. During the start phase (unity level), the gridlayout will go one by one checking gridComponet. This allow to set gridComponent neighbour (top,front,back,bottom), this able shorten time to search near by gridComponent by just checking is it null or not. The gridComponent also have component to store a character, this allow to check if the current gird is occupied or not. The grid also have a different type of highlight, the highlight is will be depend on the character action.

Character

Character component is the action be provide. Each character will have a different name,speed,class type and much more. Character will be holding number of skill component.

Match Component

Match component is where the main application is conducting. In the update level (unity level), there is a main switch function. The main purpose of the main switch is, the switch will call function/procedure on certain case.

Character Database

Character database is where all character will be store. When the match component request a character, the database will give a new character on each request.On the each request character database index number will be increase, this allow to check if a new round is started.

Skill Component

On each skill component it require a skill name, ap requirement to be use,skill description, damage element and target. On each skill have a sub component where it called "skillComponent", damage,heal and status. This able create one skill with multiple sub component. Example one skill can deal single grid then cause damage to enemy and heal self.

Flowchart

Version 0.01

Combo mechanics

Single Grid Target

In this version (0.01), when the player is attacking. The targeted character grid will be change and character will be less transparent.
There are also a knockback system. Example if the target character have back grid, the character will be move to the back grid. If the grid is occupied then both character will be move back. If the from target character grid to the very end is occupied thus more bigger damage will be apply. Also when knockback occurs player will AP bonus point.
Select the knockback skill. It require to use 2 AP.

Select an enemy.

If an enemy is knockback, player will receive a 2AP for each knockback. 2 knockback * 2AP = 4 AP

Therefore current Player AP = 5AP - 2AP (Skill requirement) + 4 AP

Horizontal and Vertical Combo System

The following is the example for horizontal and vertical attack. If it hit more than 2 character, the player will receive 2 AP.

Download

Download build version 0.01

Friday, 16 November 2018

Materialise Project

Project Phase

Project Requirement

In the simplest terms, our group project is to create a 3D application that can teach children an application of 3D software.

User case

Our use case is revolve around children therefore few of the point become our requirement:
  • Simple
  • Can be integrated into school syllabus
  • Intuitive
  • Educational, entertaining and zero-mess experience
  • Appealing
  • Children can partake in simple 3D modelling and early exposure to 3D Printing

Geometry


At our current MVP, 1 Part contain more than 1 Surface. The Surface may contain more than 1 triangle, and on each Surface and Triangle contain their own vertex. All the Vertex will be store on the Point Cloud.

UIObject

Created using an adapter pattern:
  • Created using interfaces and supports polymorphic behavior
  • Has a 1-1 relationship with Geometry and contains additional components with accessible interfaces.
Provides extensibility for use in presenter logic.
Interface
Provides Access to:
ILabelObject
LabelComponent&
ISelectableObject
SelectableComponent&
ITransformableObject
Coordinate_System&,void* p_gizmo
IColourObject
ColourComponent&
IRenderableObject
RenderableComponent&
IMovableVertex
Coordinate_System, void* p_gizmo, Vertex& 

Component

Component
Responsible for:
LabelComponent
Name of object
SelectableComponent
Selection
ColourComponent
(Surface) Colour
RenderableComponent
Values provided to rendere
Coordinate_System
Transformation

List of UIObjects


  • UIPart : ILabelObject
    • Is an ILabelObject
    • Contains a Geometry Part
    • Contains a list of UISurface
    • Can add, remove and provide access to UISurface contained within itself
  • UISurface : ILabelObject, ISelectableObject, ITransformableObject, IColourObject
    • Is ILabelObject, ISelectableObject, ITransformableObject, IColourObject
    • Contains reference to a Geometry Surface
    • Contains a list of UITriangle and a list of UIVertex
    • Can add, remove and provide access to member UITriangles
    • Provide access to member UIVertex
  • UITriangle : IRenderableObject
    • Is an IRenderableObject
    • Contains reference to a Geometry Triangle
  • UIVertex : ISelectableObject, IMovableVertex
    • Is ISelectableObject, IMovableVertex
    • Contains a reference to Geometry Vertex

Mat Academy Experiences

  • Team bonding – Building bridges, communications skills
  • Learning new Tech
  • Adapting to unforeseen circumstances
  • Getting out of comfort zones and facing new challenges
  • Gaining industrial exposure

Final Product

Conclusion

At the end of the program we mange to properly display an 3D object and their properties. The application provided 3 distinguish shape (Triangle,square,polygon) for use to play around. The database able display a proper information such as Surface owner, coordination and color. However since we short in time, we unable to optimizing certain aspect example clipping mechanism for triangles. But we sure, if we allow for more development time we able to complete it.

Monday, 29 October 2018

Update Chess Game

The following is a revisit of the old assignment from MMU

Introduction

The purpose of this to update the old assignment, it's a good practice for me to practice my code discipline and learn new code paradigm. The update is depend on my experience, things I learn along the way.
The aim Chess Game assignment is still the same, is to create a chess application without use any library. The following is the few example of explicit and implicit rule :

Explicit rules

  • Apply design pattern
  • It require to display the Chess Board
  • Each type will have different move list
  • Each player will have their own Chess Piece set
  • Each player will have their own turns
  • If player able to pin opponent Star chess piece it is a game over.

Implicit rules

  • Player unable to move a chess piece if he/she click outside the board or chess box not belong to the chess piece move list
  • If player press chess box not belong to any chess piece, his/her will not end the turn

UML


Coordinate

Since many classes use 2 point as coordination reference (x-axis & y-axis), therefore I create a Coordinate to hold both value.

Class Summary

CPDatabase The class is singleton, to prevent duplicate object and only have a one instance. addChessPiece function is to add a chess piece into the m_list, the purpose of this class to allow check all active chess piece on the board instead checking each chess box.

ClassBox

Chess box is using extend of JButton class, this allow to use all their method and added extra new method. In brief, the chess box have the additional action listener. The different is where if the chess box is empty or not. If the chess piece is included inside the chess box. It will react a different from the empty chess box, the react will be different between each chess piece. m_position is to hold the chess box position

ChessBoard

This class will be handling the chess board. The size is will be refer on [ROW] x [COLUMN] size enum. The class itself it is a singleton and will be returning a JPanel component. The component will be holding all the chess boxes. m_movelist will be holding all possible way the chess move will be move, the m_movelist is will be refer on the chess piece it self. By doing this allow, the board all care on the possibility of the chess piece action only. The chess box will be change color(RED) dependent on the m_movelist, this all to reset chess box color more efficient instead recolor it one by one. ChessBoard will be act as View component since it only responsible for the GUI.

ChessPiece

For this class I use a builder. Inside the builder it require an owner. The chess piece is can add a m_chessname and able to add multiple movelist by using addMovelist. If addVerticalMove() and addHorivontalMove() is set true, on the each turn will self check it self coordinate and calculate the possibility of movelist.

Example



The slightly thick red border is where chess piece located.

ChessPlayer

ChessPlayer only hold m_name and m_status. m_status hold Status that can be start,moving or end.

Main

The following is the initialize for the board.
to keep everything neat and simple, my design is to require to pass through the ChessBoard. After chesspiece or player it require to be initialize inside the chessboard.

To can be added

The following is the possibility for the next iteration:
  • Since the chessboard only return GUI component we able to added more GUI.
  • We can have a GUI list of all chess piece since we provide CPDatabase.
  • In ChessPiece we can add a diagonal, similar how horizontal and vertical process

Download

Chess Game with source code
Chess Game Jar

Monday, 8 October 2018

Materialise

Introduction

Materialise Academy 2018 is your chance to get a handful of practical experience in C++ working in a team on real project. It’s not similar to university studying, it’s opportunity to see software project life cycle, requirements, testing process from inside. Academy starts in the beginning of July and lasts until the end of September.
  • Basic C++ skills;
  • OOP knowledge;
  • 3-dimensional thinking;
  • Be an open-minded team player;
  • Be ready to absorb & apply knowledge, ask questions, write code;
  • Willingness to start your career and grow with Materialise;

Program

The Materialise Academy C++ concept where we compete to each other as well working with each other. The program is separated by 2 part. Where the first part is involving a self study and a test regarding C++ topic. Topic involving smart pointer,mutex,design pattern and much more. The second part is creating a 3D surface software. I was involving design process, front end and the serialization. During this program have gain a lot of industrial experience.

Timeline

The following is the topics for the first phase.

Week 1

  • Introduction to Visual Studio
  • Basic Type Variables const constexpt
  • Loop and Condition
  • Scope,Namespace,Pointer,Reference
  • Function dependencies,Argument Overloading Overwriting
  • Memory Allocation

Week 2

  • Class Structure
  • Enum
  • Abstract class and Interface
  • Run time Polymorphism
  • Inheritance Vs Composition
  • STL Container
  • String & Life cycle

Week 3

  • RAII
  • Smart Pointer
  • Templates
  • Type Cast
  • Exceptions

Week 4

  • Data Structure
  • Type Inference
  • Unit Testing
  • Overloading Operator
  • Design Pattern
  • Math 3D part 1 and Part 2

Week 5

  • function,lambda&binding
  • Project type
  • Character Encoding
  • C++ Unit Testing

Week 6

  • C++ 17 Feature

Week 7 - Week 14

Wednesday, 16 May 2018

Internship


Objective
Although they place me as a user experience designer (UX), everyday I will be in change with different type of task.My task often involving in to maintenance a website. Beside that handing the data generate requested from Bank Rakyat. I also handling helping with the MKM staging website.
Task
  1. BRDA
  2. Bank Rakyat Maintenance
  3. Maintenance of Maktab Koperasi Malaysia (MKM)
  4. Maintenance Tabung Haji Website
  5. Pocket Pixel Website
Bank Rakyat Data Analysis
Description
BRDA is involving the Bantuan Rakyat 1 Malaysia(BR1M).BRDA task is divided into a 3 stages
  • Daily generate data
  • Weekly generate data
  • Ad Hoc
Each task required a different method of solving due to different type of input type.

In daily generate BRDA is involving how to retrieve the registered user. The BR1M user register submit form via to ​ https://www.jotform.com/​ (jotform). The online register (https://ebr1m.hasil.gov.my/) is link with jotform form.

In the back-end will receive a raw data file in .csv (​ Comma-separated values)​ were each value is divided by a comma.

My task is to process the data, converting the csv format into .txt file requested by Bank Rakyat checking the rather the register IC is valid and non duplicate. The raw value also required to be in proper format, interms of spacing between values. This process required to be done everyday and submission before 5 pm. The data submission is around 3k to 5k per day.

Weekly generate is usually requested weekly data required to find a registered user email to notify their validation for the registration. The Bank Rakyat will transfer us a list of IC, my task is to find emails based on IC list.

Ad Hoc process is when a special case example missing IC or anomaly data. Usually cases from the call center or data center, our help is to provide help to them.
Implementation
For the data generate, I suggested to them using a java instead of php. The reason behind this because the php is using more cache mero since it is link with the database and the php language show output of every result of line, thus making the program taking more time.

public class AdHoc {
 public static void main(String[] args) {
  AdHoc prog = new AdHoc();
  Vector  ICVector = new Vector();
  String file1_listIC = "C://Users//Nabeel//Desktop//Aduan 28052017.txt";
  String file2_Directory = "C://Users//Nabeel//Desktop//output adhoc 28052017 part1.TXT";
  prog.readICList(file1_listIC,ICVector);
  System.out.println("==============");
  System.out.println(" Result ");
  System.out.println("==============");
  prog.readCompareFile(file2_Directory, ICVector);
  System.out.println("==============");
  System.out.println(" Leftover ");
  System.out.println("==============");
  for (int i = 0; i < ICVector.size(); i++){
   System.out.println(ICVector.get(i));
  }
 }

 public void readICList(String fileName,Vector ICList){
  try(BufferedReader br = new BufferedReader(new FileReader(fileName))) {
   for(String line; (line = br.readLine()) != null; ) {
    String words = line.replace("\\s+"," ");
    String[] arr = words.split(" ");
    
    for (int i = 0; i < arr.length; i++){
     if (i == 0){
      ICList.add(arr[i]);
     }
    }
   }
  }catch (FileNotFoundException ex) {
   System.out.println(fileName + "unable to open");
  } catch (IOException ex) {
   System.out.println("Error in input and output");
  }
 }

 public void readCompareFile (String fileName,Vector ICList){
  try(BufferedReader br = new BufferedReader(new FileReader(fileName))) {
   for(String line; (line = br.readLine()) != null; ) {
    breakline(line,ICList);
   }
  }catch (FileNotFoundException ex) {
   System.out.println(fileName + "unable to open");
  } catch (IOException ex) {
   System.out.println("Error in input and output");
  }
 }
 public void breakline(String line,Vector ICList){
  String words = line.replaceAll("\\s+"," ");
  String[] arr = words.split(" ");
  String IC = arr[0].substring(16);
  for (int i = 0; i < ICList.size(); i++){
   if(IC.contains(ICList.get(i))){
    String newLine = line.substring(952);
    String word = newLine.replaceAll("\\s+"," ");

    String[] arr2 = word.split(" ");
    String email = arr2[0];
    System.out.println(IC + " " + email);
    System.out.println(line);
    ICList.remove(i);
   }
  }
 }
}
The java program is required a less time because does not link with any database. Beside that does not show result for every line. The program work by save all ic in a vector, then the program will read the raw data and compare with a vector that contain IC. If IC is found then the IC will be removed from the vector and will print the single row of raw data. By doing this the vector will become smaller thus making search time much smaller.
Bank Rakyat Maintenance
In every website maintenance is depend on what type of content manager system (CMS). Bank Rakyat is using a Liferay CMS. Liferay is a enterprise application. It does provide support and regular update.

The maintenance is requested from the Bank Rakyat to updating the content in their website (​ http://www.bankrakyat.com.my​ ). Such as adding or removing ads, picture or information.

The Bank Rakyat Maintenance is divided into two state:
  • Staging server
  • Live website
The purpose of staging is to create a temporary representative/prototype base of the request. This allow to avoid any error on the live website




Maintenance of Maktab Koperasi Malaysia (MKM)
The maintenance for MKM is similar with Bank Rakyat website, however MKM is built with Joomla as the CMS. The task also divided into two part

  • Updating the current MKM website
  • Transfer the current content MKM into new MKM website
  • Helping finding plugin for the new MKM
The current MKM website (​ http://www.mkm.edu.my/index.php/my/​ ) does not created by the PocketPixel. It have a lot of shortcoming, example in front-end the website have a problem is switching language, the website it also have a bad web design. Example the page layout is very messy and have a bad eye navigation. The PocketPixel is given the task to maintain the current website and transfer all content into the new website.

Example of maintenance is upload a new keratan akhbar, pengunguman, sebut harga (rss) and articles. Beside uploading, my task also to remove old post and do translation for Bahasa Malaysia for certain articles

For the task transferring content, basically ripping from the old website to the new website. Content such as staff directory, picture gallery, video gallery, article , pengunguman,keratan akhbar and sebut harga However required update a certain .jpg file measurement to make sure it match with the new template.

On the new website, I require to find a suitable plugin for the new website. They given a task to find video gallery, picture gallery and staff directory. Example of the plugin required :
  1. Album
  2. Sorting by category or tag
  3. Multiupload
  4. Most up to date - currently supported
  5. Lightweight

 
Tabung haji
For the Tabung Haji website (http://www.tabunghaji.gov.my/), I required to revamp the whole navigation, it been request by the Tabung Haji to make the sub content into an accordion. The original website is using a custom made CMS and a custom made markup language, therefore I require change into a HTML language.

I required to check the documentation and the css file to make sure the html does not disrupted the template page.



Problem encounter
The main problem that I encounter is I have a small knowledge on how handling and creating web design. Example a few term I unable to understand or few point I may miss out due to it. I require learn in the moment while doing my task. I also required sharpen my PHP and javascript language to handle the back end procedure.

Beside that in web designing, I was not teach on how create a properly web site in terms of playing with the color, navigation and transition. This cause problem in discussing the Pocket Pixel website design.
Way to Improve
I have been suggested to go around the internet on to see how to current website is build around. Currently many website is more interested on create that very minimal website. This is due to able to avoid unnecessary information dump to the user

For the back end programming issue I required to learn basic first. By understanding a basic I will able handle a more complicated issue. They suggested to me use a TreeHouse on how to learn creating a basic website.

Training Analysis Skill develop
  • Basic backend-programmer process
  • Basic frontend-programmer process
  • Basic CSS and PHP function
  • Javascript
  • CMS
    • I learn on how to install, tested Liferay.Create a page and post
    • Using a wordpress in terms of create a page, content/articles and setting
    • Using a joomla in terms of create a page, content/articles and setting
    • How to install plugin
    • How to choose plugin that is suitable with the website
    • Different between wordpress, drupal and joomla
Suitability, Strengths, Weaknesses
In my opinion I suitable in backend process, where handling how to create the template page. I found it way interesting than front end process.
My biggest weakness is in designing a website. I unable to capture or understand on which color,font,text size and medium to be use
Application of subject knowledge gained in the university to the industrial environment
The following is the subject that gain at university that apply during the internship
  1. Programming fundamental
  2. Website Application
  3. Software requirement
Recommendation to others
Yes, I will recommend to other to involve within this field even though I have a basic knowledge in web designing.
I also recommend other student to taking internship with Pocket Pixel, they have a good working environment and the staff is very friendly.
Conclusion
In conclusion my internship is very challenging. The task given often required finish within a day period. I required to learn and apply my new found knowledge as soon as possible. It literally feeled like you either can “swim or sink” in any moment. However I feel very motivated to learn something new especially within the field I not recognized. The web design industry is very huge however everyone able to apply if have a proper knowledge to be use.

Monday, 23 April 2018

Chess Game

The following is a revisit from Object Oriented Analysis Data (OOAD) assignment.

Introduction

In Object Oriented Analysis Data introduce us to programming language JAVA. Previously in other programming subject we use C++ as our primary language. The subject cover all advantages of object oriented such as Polymorphism, Inheritance, Encapsulation and Abstract. The purpose of the assignment is to use all object oriented advantages.


The Chess Game assignment is to create a chess application without use any library. The following is the few example of explicit and implicit rule : 

Explicit rules

  • It require to display the Chess Board
  • Chess Board will be 5x5
  • Each chess piece will have different type(SUN,MOON and STAR)
  • Each type will have different move list
  • Each player will have their own Chess Piece set
  • Each player will have their own turns
  • If player able to pin opponent Star chess piece it is a game over.

Inplicit rules

  • Player unable to move a chess piece if he/she click outside the board or chess box not belong to the chess piece move list
  • If player press chess box not belong to any chess piece, his/her will not end the turn

UML

Class Summary


Chess Board

The Chess Board will be holding/involving all the chess piece and chess box. The chess board also involving player object (player 1 and player 2).

Chess Box

Chess box is using extend of JButton class, this allow to use all thier method and added extra new method. In brief, the chess box have the same action listener. The different is where if the chess box is empty or not. If the chess piece is included inside the chess box. I will react a different from the empty chess box, the react will be different between each chess piece.

Chess Piece

The Chess Piece is divided into 3 different Piece: Sun, Moon Star. Basically divided the Chess Piece into parent-child base. Where the Chess Piece become the parent while the rest become a child class. This allow all child class have different method but different properties such as move list. Star will act as King in a normal chess game. Game is depend who can pin his/her opponent Star first.

Coordinate

Since many classes use 2 point as coordination reference (x-axis & y-axis), therefore I create a Coordinate to hold both value.

UI panel

The UI panel will display player action. Example current player turn, current chess piece and it move list. Commant Prompt show the action of player, for example if player press chess box contain chess piece it will display "Player1 is pressing box [1,4]".

Player Flowchart

On each turn, one player status will be "ready" while other is "moving".
  1. Player start with current player status is ready.
  2. Programme will wait player to click a chess box the programme will check rather it contain chess piece. If yes it will change the player status into moving.If does not contain it will be repeat this process
  3. Next the programme will be wating for next chess box to be click. If the next chess box is does not contain any chess piece, player status will revert back to ready and repeat the previous step. If the player click an empty chess box, the will move the chess piece and end his/her turn
  4. If the chess box contain player very own chess piece it will loop back to step 1, else chess box contain the oponnet chess piece. It will remove the opponent chess piece and move player chess piece.The player will end the turn

Game Flowchart

  1. Game start with player 1 move first
  2. Next it will check if player able pin Star chess piece
  3. If not it will switch player turn,else game will end

Game Layout

Chess Piece Move list

Sun

Star

Moon

Download

Chess Game with source code
Chess Game Jar

Bug

There is a bug where a chess piece can hop over.