Saturday, January 29, 2011

Android 3 Honeycomb 3.0 Preview 2011

Google To Give A Better Taste Of Honeycomb Next Week At Press Event And On YouTube

Tutorial: Android & Mind Games

Developing a game on android is a whole new ball game i.e. very different from making database apps. You have to know the logic behind every move. The flow of the program is complex and you also have to keep in mind about the memory issues if necessary.
Mind games are great mind-teasers as well as thrilling to the general smartphone users. Ever wondered what are the essentials that a typical mind game program is comprised of?
We usually have the following: Random Numbers, Timer, and MotionEvent.
Here is a source code for a little game on Android that i named "Reflexo", as it measures one's reflexes :)


main.xml

reflexo.java:


package com.games.reflexo;

import java.util.Random;

import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.MotionEvent;
import android.view.View;

import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class Reflexo extends Activity {
/** Called when the activity is first created. */

int score = 0;


int left = 0;
int top = 0;
int right = 0;
int bottom = 0;

Button startGame;
ImageView imgView;
TextView scoreDisplay;

MyCount counter;
int length = 10000;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

startGame = (Button)findViewById(R.id.start);
imgView = (ImageView)findViewById(R.id.img);
scoreDisplay = (TextView)findViewById(R.id.score);

startGame.setOnClickListener(new View.OnClickListener(){

public void onClick(View v)
{
startGame.setVisibility(0);
counter.start();
}

});

imgView.setOnTouchListener(new OnTouchListener(){

public boolean onTouch(View v,MotionEvent e) {


if (e.getAction() == MotionEvent.ACTION_DOWN)
{
score++;
}
return true;
}});


counter = new MyCount(length, 300);
}


public class MyCount extends CountDownTimer
{

public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);



}

public void onFinish() {
scoreDisplay.setVisibility(1);
scoreDisplay.setText("Score:" + score);
}

public void onTick(long millisUntilFinished) {

Random randomNum = new Random();
left = randomNum.nextInt(200);
top = randomNum.nextInt(400);
right = randomNum.nextInt(200);
bottom = randomNum.nextInt(400);



if (millisUntilFinished / 100 % 2 == 0)
{
imgView.setPadding(left, top, right, bottom);
imgView.setVisibility(View.VISIBLE);
}
else
{
imgView.setVisibility(View.INVISIBLE);
}


}
}


}



Saturday, January 22, 2011

Tutorial: A Simple TicTacToe App On Android



I found this code pretty useful for beginners to learn java programming and at the same time coming up with something fun and useful.

main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<!-- Demonstrates using a relative layout to create a form --> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"> 
                  
    <Button android:id="@+id/one" 
            android:layout_width="100px" 
            android:layout_height="100px" 
            android:layout_alignParentRight="true" 
            android:layout_marginLeft="5px" 
            android:text=" " 
            android:textSize="70px" /> 
            
    <Button android:id="@+id/two" 
          android:layout_width="100px" 
            android:layout_height="100px" 
            android:layout_toLeftOf="@id/one" 
            android:layout_alignTop="@id/one" 
            android:layout_marginLeft="5px" 
            android:text=" " 
            android:textSize="70px" /> 
            
    <Button android:id="@+id/three" 
          android:layout_width="100px" 
            android:layout_height="100px" 
            android:layout_toLeftOf="@id/two" 
            android:layout_alignTop="@id/two" 
            android:layout_marginLeft="5px" 
            android:text=" " 
            android:textSize="70px" 
            android:padding="0px"/> 
                        
    <Button android:id="@+id/four" 
            android:layout_width="100px" 
            android:layout_height="100px" 
            android:layout_alignParentRight="true" 
            android:layout_marginLeft="5px" 
            android:layout_below="@id/one" 
            android:text=" " 
            android:textSize="70px" /> 
            
     <Button android:id="@+id/five" 
          android:layout_width="100px" 
            android:layout_height="100px" 
            android:layout_toLeftOf="@id/four" 
            android:layout_alignTop="@id/four" 
            android:layout_marginLeft="5px" 
            android:text=" " 
            android:textSize="70px" /> 
            
    <Button android:id="@+id/six" 
          android:layout_width="100px" 
            android:layout_height="100px" 
            android:layout_toLeftOf="@id/five" 
            android:layout_alignTop="@id/five" 
            android:layout_marginLeft="5px" 
            android:text=" " 
            android:textSize="70px" /> 
            
    <Button android:id="@+id/seven" 
            android:layout_width="100px" 
            android:layout_height="100px" 
            android:layout_alignParentRight="true" 
            android:layout_marginLeft="5px" 
            android:layout_below="@id/four" 
            android:text=" " 
            android:textSize="70px" /> 
            
     <Button android:id="@+id/eight" 
          android:layout_width="100px" 
            android:layout_height="100px" 
            android:layout_toLeftOf="@id/seven" 
            android:layout_alignTop="@id/seven" 
            android:layout_marginLeft="5px" 
            android:text=" " 
            android:textSize="70px" /> 
            
    <Button android:id="@+id/nine" 
          android:layout_width="100px" 
            android:layout_height="100px" 
            android:layout_toLeftOf="@id/eight" 
            android:layout_alignTop="@id/eight" 
            android:layout_marginLeft="5px" 
            android:text=" " 
            android:textSize="70px" /> 
      
     <TextView android:id="@+id/dialogue" 
          android:layout_width="fill_parent" 
          android:layout_below="@id/nine" 
          android:layout_height="wrap_content" 
          android:text="Click a button to start" 
          android:gravity="center_horizontal" 
          android:layout_marginTop="20px" 
          android:textSize="20px"/> 
      
</RelativeLayout> 









TicTacToe.java:

package com.games.tictactoe;


import java.util.Random;


import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class TicTacToe extends Activity {


     int c[][];
     int i, j, k = 0;
     Button b[][];
     TextView textView;
     AI ai;


     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);        


          setBoard();
     }
    
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
          super.onCreateOptionsMenu(menu);
          MenuItem item = menu.add("New Game");
          return true;
     }
    
     public boolean onOptionsItemSelected(MenuItem item) {
          setBoard();
          return true;
     }


     // Set up the game board.
     private void setBoard() {
          ai = new AI();
          b = new Button[4][4];
          c = new int[4][4];


          textView = (TextView) findViewById(R.id.dialogue);


          b[1][3] = (Button) findViewById(R.id.one);
          b[1][2] = (Button) findViewById(R.id.two);
          b[1][1] = (Button) findViewById(R.id.three);


          b[2][3] = (Button) findViewById(R.id.four);
          b[2][2] = (Button) findViewById(R.id.five);
          b[2][1] = (Button) findViewById(R.id.six);


          b[3][3] = (Button) findViewById(R.id.seven);
          b[3][2] = (Button) findViewById(R.id.eight);
          b[3][1] = (Button) findViewById(R.id.nine);
        
          for (i = 1; i <= 3; i++) {
               for (j = 1; j <= 3; j++)
                    c[i][j] = 2;
          }


          textView.setText("Click a button to start.");


          // add the click listeners for each button
          for (i = 1; i <= 3; i++) {
               for (j = 1; j <= 3; j++) {
                    b[i][j].setOnClickListener(new MyClickListener(i, j));
                    if(!b[i][j].isEnabled()) {
                         b[i][j].setText(" ");
                         b[i][j].setEnabled(true);
                    }
               }
          }
     }


     class MyClickListener implements View.OnClickListener {
          int x;
          int y;


          public MyClickListener(int x, int y) {
               this.x = x;
               this.y = y;
          }


          public void onClick(View view) {
               if (b[x][y].isEnabled()) {
                    b[x][y].setEnabled(false);
                    b[x][y].setText("O");
                    c[x][y] = 0;
                    textView.setText("");
                    if (!checkBoard()) {
                         ai.takeTurn();
                    }
               }
          }
     }


     private class AI {
          public void takeTurn() {
          if(c[1][1]==2 &&
                    ((c[1][2]==0 && c[1][3]==0) ||
                     (c[2][2]==0 && c[3][3]==0) ||
                     (c[2][1]==0 && c[3][1]==0))) {
               markSquare(1,1);
          } else if (c[1][2]==2 &&
                    ((c[2][2]==0 && c[3][2]==0) ||
                     (c[1][1]==0 && c[1][3]==0))) {
               markSquare(1,2);
          } else if(c[1][3]==2 &&
                    ((c[1][1]==0 && c[1][2]==0) ||
                     (c[3][1]==0 && c[2][2]==0) ||
                     (c[2][3]==0 && c[3][3]==0))) {
               markSquare(1,3);
          } else if(c[2][1]==2 &&
                    ((c[2][2]==0 && c[2][3]==0) ||
                     (c[1][1]==0 && c[3][1]==0))){
               markSquare(2,1);
          } else if(c[2][2]==2 &&
                    ((c[1][1]==0 && c[3][3]==0) ||
                     (c[1][2]==0 && c[3][2]==0) ||
                     (c[3][1]==0 && c[1][3]==0) ||
                     (c[2][1]==0 && c[2][3]==0))) {
               markSquare(2,2);
          } else if(c[2][3]==2 &&
                    ((c[2][1]==0 && c[2][2]==0) ||
                     (c[1][3]==0 && c[3][3]==0))) {
               markSquare(2,3);
          } else if(c[3][1]==2 &&
                    ((c[1][1]==0 && c[2][1]==0) ||
                     (c[3][2]==0 && c[3][3]==0) ||
                     (c[2][2]==0 && c[1][3]==0))){
               markSquare(3,1);
          } else if(c[3][2]==2 &&
                    ((c[1][2]==0 && c[2][2]==0) ||
                     (c[3][1]==0 && c[3][3]==0))) {
               markSquare(3,2);
          }else if( c[3][3]==2 &&
                    ((c[1][1]==0 && c[2][2]==0) ||
                     (c[1][3]==0 && c[2][3]==0) ||
                     (c[3][1]==0 && c[3][2]==0))) {
               markSquare(3,3);
          } else {
               Random rand = new Random();
              
               int a = rand.nextInt(4);
               int b = rand.nextInt(4);
               while(a==0 || b==0 || c[a][b]!=2) {
                    a = rand.nextInt(4);
                    b = rand.nextInt(4);
               }
               markSquare(a,b);
          }
     }


          private void markSquare(int x, int y) {
               b[x][y].setEnabled(false);
               b[x][y].setText("X");
               c[x][y] = 1;
               checkBoard();
          }
     }


     // check the board to see if someone has won
     private boolean checkBoard() {
          boolean gameOver = false;
          if ((c[1][1] == 0 && c[2][2] == 0 && c[3][3] == 0)
                    || (c[1][3] == 0 && c[2][2] == 0 && c[3][1] == 0)
                    || (c[1][2] == 0 && c[2][2] == 0 && c[3][2] == 0)
                    || (c[1][3] == 0 && c[2][3] == 0 && c[3][3] == 0)
                    || (c[1][1] == 0 && c[1][2] == 0 && c[1][3] == 0)
                    || (c[2][1] == 0 && c[2][2] == 0 && c[2][3] == 0)
                    || (c[3][1] == 0 && c[3][2] == 0 && c[3][3] == 0)
                    || (c[1][1] == 0 && c[2][1] == 0 && c[3][1] == 0)) {
               textView.setText("Game over. You win!");
               gameOver = true;
          } else if ((c[1][1] == 1 && c[2][2] == 1 && c[3][3] == 1)
                    || (c[1][3] == 1 && c[2][2] == 1 && c[3][1] == 1)
                    || (c[1][2] == 1 && c[2][2] == 1 && c[3][2] == 1)
                    || (c[1][3] == 1 && c[2][3] == 1 && c[3][3] == 1)
                    || (c[1][1] == 1 && c[1][2] == 1 && c[1][3] == 1)
                    || (c[2][1] == 1 && c[2][2] == 1 && c[2][3] == 1)
                    || (c[3][1] == 1 && c[3][2] == 1 && c[3][3] == 1)
                    || (c[1][1] == 1 && c[2][1] == 1 && c[3][1] == 1)) {
               textView.setText("Game over. You lost!");
               gameOver = true;
          } else {
               boolean empty = false;
               for(i=1; i<=3; i++) {
                    for(j=1; j<=3; j++) {
                         if(c[i][j]==2) {
                              empty = true;
                              break;
                         }
                    }
               }
               if(!empty) {
                    gameOver = true;
                    textView.setText("Game over. It's a draw!");
               }
          }
          return gameOver;
     }
}







iPhone User? 90% Chance You’re On The Latest OS. Android User? 0.4% Chance

iPhone User? 90% Chance You’re On The Latest OS. Android User? 0.4% Chance

DriveSmart Android App Plays On Parental Fears Of Teens Texting While Driving

http://techcrunch.com/2011/01/18/drivemsart-teens-texting/

PicPlz Pretties Up Android App And Begins Accepting (Beta) API Applications

PicPlz Pretties Up Android App And Begins Accepting (Beta) API Applications