MineCraft

screenshot

Click this screenshot to play!

With a hope to create a web-based, dynamic game, I taught ActionScript 3 to myself and finally began developing a game “MineCraft” (Temporary name) with AS3.

Design (Plan):
In the game, one (or two) player controls a white square, which can “shoot” a mine to any place (pointed by the mouse) and the mine explodes when an enemy (red square) collide.
The theme of the game is to eliminate all enemies with a limited number of mines by efficiently utilizing the mines.
When the white square collides with any red square, the player loses.
A set of rounds with different number of enemies will be created and the player will have options to improve the weapon of its white square.

Currently only basic features are implemented and any updates will be posted here.

When development is complete, the source codes and final game will be uploaded at sourceforge as usual.

You can play a sample round here:MineCraft By Wonjohn Choi.

Any feedback is appreciated.

Thank you!

* MineCraft uses a “FlashPunk” library developed by Chevy Ray Johnston.

* MineCraft is written in ActionScript 3 and requires a browser supporting flash to run.


Version 0.01

– Sample round is added.


Version 0.02

– Improved sample round is added.

– Score field is added.

Advertisements

Stopwatch

Recently I wrote some online sample tests and realized that those tests do not limit the test time for me.

Hence I needed a stopwatch and one from http://www.online-stopwatch.com/ was quite useful.

But since both the stopwatch and the online tests were displayed on an internet browser (Google Chrome), I had to switch between the two sites during the test. You know… switching between two websites while concentrating on problems… is really inconvenient. That’s why I spent today’s lunch and made one that always stays at the top of the computer screen! Here is the screenshot:

Stopwatch by Wonjohn Choi

Stopwatch by Wonjohn Choi

As always I will put this software (and the sourcecode) to the Download section to share, so feel free to use it 🙂

If it is not convenient/useful enough for you, please take a stop to explain why at Request section.

Thanks

Wonjohn Choi


Version 2

In this new version,

  • Watch to show the current time is added
Stopwatch_V2

Stopwatch_V2

[Design] Go (Board Game)

A Screenshot of the Current Progress (Incomplete)
GoBoard - Screenshot

GoBoard - Screenshot

Rough Sketch of Each Class
  • GoBoard: JPanel
    • It represents a “Go” game board.
    • An array of Buttons to represent spaces to put stones.
    • Methods include:
      • GoBoard(int height, int width)
      • GoBoard(int height, int width, int size)
      • isEmpty(int row, int col): boolean
      • setEmpty(int row, int col): void
      • get(int row, int col) JButton
      • fill(int row, int col, Color c): void
      • reset(): void
      • inWidthRange(int x): boolean
      • inHeightRange(int y): boolean
  • GoEngine: JFrame
    • It takes care of the logic (for example, calculating the portion of dead stones)
    • Methods include:
      • GoEngine(int size)
      • promptSIZE(): int
      • actionPerformed(ActionEvent e): void
      • findDeadStones(Color deadColor, int row, int col): LinkedList<JButton>
  • GoMenu: JMenu
    • File
      • New
      • Save
      • Open
      • About
      • Exit
    • Board Size
      • 3 * 3
      • 4 * 4
      • 5 * 5
      • 19 * 19
  • GoPlayer
  • GoUI

Future Goal

  • Make a full functioning Go Board Game with menu
  • Implement some original ideas
  • Make the design look fancier

[Requirement] Go (Board Game)

Due to my Canadian friends who play “Go,” the Asian game each other, I was inspired to develop the game in Java.

Go (Board Game) from Google Image Search

Go (Board Game) from Google Image Search

As I have developed many original/existing board games like “Tic-Tac-Toe,” “Five in a Row,” “Connect Four,” and “Fill Thirty Six,” the general board will be easy to make. However, I think making my board looks like a real Go board will be a difficult part. AI and Network Connect might or might not be implemented.

Game: Go (Board Game)

Programming Language: Java

Developer: Wonjohn Choi

Robocode – Untouchable

Robocode is a programming game, where the goal is to develop a robot battle tank to battle against other tanks in Java or .NET. The robot battles are running in real-time and on-screen.

About six months ago, in school, my team (Wonjohn Choi, Raafay Muzaffar) created our robot named “Untouchable” based on Robocode software.

With numerous experiment, this robot is designed to avoid bullets with a repeated movement and shoot bullets with optimized power.

Untouchable

Untouchable

This robot wins against any built-in robocode robots and won school Robocode contest!

You can download the full zip file in Downloads page.

Here is the main source code (without comments):


/**
 *
 * Untouchable - a robot by Wonjohn Choi and Raafay Muzaffar
 * @author Wonjohn Choi, Raafay Muzaffar
 * @date Jan. 19th, 2010
 */

import robocode.*;
import java.awt.Color;

public class Untouchable extends Robot
{
  Color getRandomColor[]=new Color[4];

  public void run()
  {
    this.turnGunRight(90);
    this.turnRadarRight(90);

    while(true)
    {
      for(int i=0;i<4;i++)
      {
        getRandomColor[i]=
        Color.getHSBColor((float)Math.random(),(float)Math.random(),(float)Math.random());
      }

      setColors(getRandomColor[0],getRandomColor[1],getRandomColor[2],Color.WHITE,getRandomColor[3]);

      for(int i=0;i<2;i++)
      {
        this.turnRadarLeft(360);
        this.turnRight(20);

        this.ahead(250);
      }

      for(int i=0;i<2;i++)
      {
        this.turnRadarLeft(360);
        this.turnLeft(10);

        this.back(250);
      }

    }
  }

  /**
   * onScannedRobot: What to do when you see another robot
   */
  public void onScannedRobot(ScannedRobotEvent e)
  {
    this.turnRight(e.getBearing()-90);

    double dist=e.getDistance();

    if(this.getEnergy()<5)
    {
      this.fire(0.1);
    }

    else if(dist<200)
    {
      this.fire(3);
    }

    else if(dist<400)
    {
      this.fire(2);
    }

    else if(dist<600)
    {
      this.fire(1);
    }

    else
    {
      this.fire(0.1);
    }
  }

  public void onHitRobot(HitRobotEvent e)
  {
    if (e.getBearing() >= 0)
    {
      turnRight(e.getBearing()-90);
    }
    else
    {
      turnRight(-1*(e.getBearing()-90));
    }

    fire(3);
  }
}

[Maintenance] Pentris

Pentris (+Tetris) V.1. is finished!

Source code can be downloaded from downloads page, so check it out if you are willing to see how it is implemented.
As usual, any changes on software (updates) will be posted here.

Pentris Screenshot

Pentris Screenshot

[Implementation] Pentris – Piece

Updates
  • TYPE enum: TYPE contains every possible type of piece in Tetris and Pentris. Also, a method to randomly select a type is implemented.
  • Direction enum: Direction contains four possible directions of a move.
  • Piece class: this models the data of Tetris and Pentris pieces

Piece class contains

  • Static HashMap variables that are used to contain unchangeable data (color of a piece, coordinates (shape) of a piece, and min/max points for each type)
  • x and y that record the center of a piece
  • basic methods that a piece needs