:::::Shikhor Himadrir :::::

Please Give your valuable comments on my blogs and make me more responsible blogger
Showing posts with label source code. Show all posts
Showing posts with label source code. Show all posts
Friday, 7 May 2010

The Calculator Implementation In java

Introduction
In this blog i am going implement the simple calculator in java.I will try to explain all the things that are very important and anyone who is familiar with java GUI programing can easily understand the source code.

Before you start, please be sure that you have the latest Netbeans version and java run time environment software.You can download tease two software from the link given bellow :-

http://netbeans.org/downloads/

http://java.sun.com/javase/downloads/index.jsp


The Calculator Screen
If we run the java source code, we will see a calculator like this :-



To exit the calculator correctly , we must click the File option given in the picture bellow :-



Here Is the Complete Source Code :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package calculator;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;


/**
*
* @author himadree
*/
public class Main extends JFrame implements ActionListener {

/**
* @param args the command line arguments
*/
final int MAX_INPUT_LENGTH = 20;
final int INPUT_MODE = 0;
final int RESULT_MODE = 1;
final int ERROR_MODE = 2;
int displayMode;

boolean clearOnNextDigit, percent;
double lastNumber;
String lastOperator;

private JMenu jmenuFile, jmenuHelp;
private JMenuItem jmenuitemExit, jmenuitemAbout;

private JLabel jlbOutput;
private JButton jbnButtons[];
private JPanel jplMaster, jplBackSpace, jplControl;

/*
* Font(String name, int style, int size)
Creates a new Font from the specified name, style and point size.
*/

Font f12 = new Font("Times New Roman", 0, 12);
Font f121 = new Font("Times New Roman", 1, 12);


// Constructor
public Main()
{
/* Set Up the JMenuBar.
* Have Provided All JMenu's with Mnemonics
* Have Provided some JMenuItem components with Keyboard Accelerators
*/

jmenuFile = new JMenu("File");
jmenuFile.setFont(f121);
jmenuFile.setMnemonic(KeyEvent.VK_F);

jmenuitemExit = new JMenuItem("Exit");
jmenuitemExit.setFont(f12);
jmenuitemExit.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_X,
ActionEvent.CTRL_MASK));
jmenuFile.add(jmenuitemExit);

jmenuHelp = new JMenu("Help");
jmenuHelp.setFont(f121);
jmenuHelp.setMnemonic(KeyEvent.VK_H);

jmenuitemAbout = new JMenuItem("About Calculator");
jmenuitemAbout.setFont(f12);
jmenuHelp.add(jmenuitemAbout);

JMenuBar mb = new JMenuBar();
mb.add(jmenuFile);
mb.add(jmenuHelp);
setJMenuBar(mb);

//Set frame layout manager

setBackground(Color.gray);

jplMaster = new JPanel();

jlbOutput = new JLabel("0");
jlbOutput.setHorizontalTextPosition(JLabel.RIGHT);
jlbOutput.setBackground(Color.WHITE);
jlbOutput.setOpaque(true);

// Add components to frame
getContentPane().add(jlbOutput, BorderLayout.NORTH);

jbnButtons = new JButton[23];


JPanel jplButtons = new JPanel(); // container for Jbuttons

// Create numeric Jbuttons
for (int i=0; i<=9; i++) { // set each Jbutton label to the value of index jbnButtons[i] = new JButton(String.valueOf(i)); } // Create operator Jbuttons jbnButtons[10] = new JButton("+/-"); jbnButtons[11] = new JButton("."); jbnButtons[12] = new JButton("="); jbnButtons[13] = new JButton("/"); jbnButtons[14] = new JButton("*"); jbnButtons[15] = new JButton("-"); jbnButtons[16] = new JButton("+"); jbnButtons[17] = new JButton("sqrt"); jbnButtons[18] = new JButton("1/x"); jbnButtons[19] = new JButton("%"); jplBackSpace = new JPanel(); jplBackSpace.setLayout(new GridLayout(1, 1, 2, 2)); Color c = new Color(70,50,30 ); jbnButtons[20] = new JButton("Backspace"); jbnButtons[20].setBackground(c); jplBackSpace.add(jbnButtons[20]); jplControl = new JPanel(); jplControl.setLayout(new GridLayout(1, 2, 2 ,2)); jbnButtons[21] = new JButton(" CE "); jbnButtons[21].setBackground(c); jbnButtons[22] = new JButton("C"); jbnButtons[22].setBackground(c); jplControl.add(jbnButtons[21]); jplControl.add(jbnButtons[22]); // Setting all Numbered JButton's to Blue. The rest to Red for (int i=0; i<20) i="7;" i="4;" i="1;" and =" jplButtons.add(jbnButtons[0]);" i="0;" add="" windowlistener="" closing="" frame="" and="" ending="" program="" new="" windowevent="" contructor="" perform="" action="" public="" void="" actionevent="" double="" result="0;" jdialog="" dlgabout="new" about="" java="" swing="" calculator="" else="" search="" the="" button="" pressed="" until="" end="" of="" array="" or="" key="" found="" for="" int="" i="0;">< inputstring =" getDisplayString();" inputstring =" inputString.substring(1);"> 0)
&& inputString.length() < displaymode =" INPUT_MODE;" clearonnextdigit =" false;" displaymode =" INPUT_MODE;" inputstring =" getDisplayString();" displaymode ="="" input =" getDisplayString();"> 0 && !input.equals("0"))
{
if (input.indexOf("-") == 0)
setDisplayString(input.substring(1));

else
setDisplayString("-" + input);
}

}

else if (displayMode == RESULT_MODE)
{
double numberInDisplay = getNumberInDisplay();

if (numberInDisplay != 0)
displayResult(-numberInDisplay);
}
}

void clearAll() {
setDisplayString("0");
lastOperator = "0";
lastNumber = 0;
displayMode = INPUT_MODE;
clearOnNextDigit = true;
}

void clearExisting(){
setDisplayString("0");
clearOnNextDigit = true;
displayMode = INPUT_MODE;
}

double getNumberInDisplay() {
String input = jlbOutput.getText();
return Double.parseDouble(input);
}

void processOperator(String op) {
if (displayMode != ERROR_MODE)
{
double numberInDisplay = getNumberInDisplay();

if (!lastOperator.equals("0"))
{
try
{
double result = processLastOperator();
displayResult(result);
lastNumber = result;
}

catch (DivideByZeroException e)
{
}
}

else
{
lastNumber = numberInDisplay;
}

clearOnNextDigit = true;
lastOperator = op;
}
}

void processEquals(){
double result = 0;

if (displayMode != ERROR_MODE){
try
{
result = processLastOperator();
displayResult(result);
}

catch (DivideByZeroException e) {
displayError("Cannot divide by zero!");
}

lastOperator = "0";
}
}

double processLastOperator() throws DivideByZeroException {
double result = 0;
double numberInDisplay = getNumberInDisplay();

if (lastOperator.equals("/"))
{
if (numberInDisplay == 0)
throw (new DivideByZeroException());

result = lastNumber / numberInDisplay;
}

if (lastOperator.equals("*"))
result = lastNumber * numberInDisplay;

if (lastOperator.equals("-"))
result = lastNumber - numberInDisplay;

if (lastOperator.equals("+"))
result = lastNumber + numberInDisplay;

return result;
}

void displayResult(double result){
setDisplayString(Double.toString(result));
lastNumber = result;
displayMode = RESULT_MODE;
clearOnNextDigit = true;
}

void displayError(String errorMessage){
setDisplayString(errorMessage);
lastNumber = 0;
displayMode = ERROR_MODE;
clearOnNextDigit = true;
}


public static void main(String[] args) {
// TODO code application logic here
Main calci = new Main();
Container contentPane = calci.getContentPane();
calci.setTitle("Java Calculator ");
calci.setSize(250, 220);
calci.pack();
calci.setLocation(200, 300);
calci.setVisible(true);
calci.setResizable(false);

}

}


class DivideByZeroException extends Exception{
public DivideByZeroException()
{
super();
}

public DivideByZeroException(String s)
{
super(s);
}
}

class CustomABOUTDialog extends JDialog implements ActionListener {
JButton jbnOk;

CustomABOUTDialog(JFrame parent, String title, boolean modal){
super(parent, title, modal);
setBackground(Color.black);

JPanel p1 = new JPanel(new FlowLayout(FlowLayout.CENTER));

StringBuffer text = new StringBuffer();
text.append("Calculator \n\n");
text.append("Developer: Himadree\n");
text.append("Version: 1.0");

JTextArea jtAreaAbout = new JTextArea(5, 21);
jtAreaAbout.setText(text.toString());
jtAreaAbout.setFont(new Font("Times New Roman", 1, 13));
jtAreaAbout.setEditable(false);

p1.add(jtAreaAbout);
p1.setBackground(Color.red);
getContentPane().add(p1, BorderLayout.CENTER);

JPanel p2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
jbnOk = new JButton(" OK ");
jbnOk.addActionListener(this);

p2.add(jbnOk);
getContentPane().add(p2, BorderLayout.SOUTH);

setLocation(408, 270);
setResizable(false);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e)
{
Window aboutDialog = e.getWindow();
aboutDialog.dispose();
}
}
);

pack();
}

public void actionPerformed(ActionEvent e)
{
if(e.getSource() == jbnOk) {
this.dispose();
}
}

}



Note : For more information, you can also visit my other blogs. And don't forget to give your valuable comments.

Saturday, 1 May 2010

The Snake Game In C

Introduction

This is a small turbo c program of snake game using
some graphics.h functions. Anyone who is familiar with C graphics
programming can do it very easily
.

Code Explanation
In the beginning of code explanation the first important part is
initializing the graphics mode in turbo C to do drawing a calculator and
that is must be done before using every graphics related functions. This
graphics initialization is done by a pre-define function called initgraph()
with a tiny code part given below :

int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "C:\\TC\\BGI");

If your TC folder is in D drive than just type "D:\\TC\\BGI" instead of
"C:\\TC\\BGI"

inside the initgraph( ) function.So if you want to use graphics functions in
your turbo c program, than you have to always write these two statement in
the main( ) function.


If you initialize the graphics mode than, all graphics.h function can be use
in the program.But if you need to come back to the normal textmode (the
black screen ) than you have to shut down the graphics mode by using the
graphics.h function closegraph( ).


In that program we have use three user-define functions given below :
void check();
void end();
void win();

The first screen shot will be like this :-




The gaming screen will be look like this :-




Here is the source code
#include "graphics.h"
#include 'stdlib.h"
#include "dos.h"
#include "conio.h"
#include "stdio.h"
#include "time.h"

int m[500],n[500],con=20,TEMP;
clock_t start,stop;

void main(void)
{



int gd=DETECT,gm,ch,maxx,maxy,x=13,y=14,p,q,spd=100;

int a=0,i=0,j,t,temp;

initgraph(&gd,&gm,"C:\\TC\\BGI");

setcolor(6);

settextstyle(1,0,6);

outtextxy(20,2," SNAKE 2 BY Himadree ");

settextstyle(6,0,2);

outtextxy(20,80," Use Arrow Keys To Direct The Snake ");

outtextxy(20,140," Avoid The Head Of Snake Not To Hit Any Part Of
Snake");

outtextxy(20,160," Pick The Beats Untill You Win The Game ");

outtextxy(20,200," Press 'Esc' Anytime To Exit ");

outtextxy(20,220," Press Any Key To Continue ");

outtextxy(20,240," DONT FORGET TO GIVE U R VALUABLE OPINION ");

ch=getch();

if(ch==27) exit(0);

cleardevice();

maxx=getmaxx();

maxy=getmaxy();

randomize();
p=random(maxx);
temp=p%13;
p=p-temp;
q=random(maxy);
temp=q%14;
q=q-temp;
start=clock();

while(1)
{

setcolor(WHITE);
setfillstyle(SOLID_FILL,con+5);
circle(p,q,5);
floodfill(p,q,WHITE);
if( kbhit() )
{

ch=getch(); if(ch==0) ch=getch();

if(ch==72&& a!=2) a=1;

if(ch==80&& a!=1) a=2;

if(ch==75&& a!=4) a=3;

if(ch==77&& a!=3) a=4;


}
else
{

if(ch==27){

break;


}

}

if(i<20){

m[i]=x;


n[i]=y;

i++;

}

if(i>=20)
{

for(j=con;j>=0;j--){

m[1+j]=m[j];

n[1+j]=n[j];


}

m[0]=x;
n[0]=y;
setcolor(WHITE);
setfillstyle(SOLID_FILL,con);
circle(m[0],n[0],8);
floodfill(m[0],n[0],WHITE);
setcolor(WHITE);
for(j=1;j<con;j++){

setfillstyle(SOLID_FILL,con+j%3);
circle(m[j],n[j],5);
floodfill(m[j],n[j],WHITE);
}

delay(spd);
setcolor(BLACK);
setfillstyle(SOLID_FILL,BLACK);
circle(m[0],n[0],8);
floodfill(m[0],n[0],BLACK);
setcolor(BLACK);
setfillstyle(SOLID_FILL,BLACK);
circle(m[j],n[j],5);
floodfill(m[j],n[j],BLACK);
}

stop=clock();

t=(stop-start)/CLK_TCK;

check();

if(x==p && y==q)
{

con=con+5;

if(spd>=5)
spd=spd-5;
else spd=5;

if(con>490)

win();
p=random(maxx); temp=p%13; p=p-temp;
q=random(maxy); temp=q%14; q=q-temp;
}
if(a==1){
y = y-14;

}

if(y<0)
{

temp=maxy%14;y=maxy-temp;

}

if(a==2)
{

y = y+14;


}

if(y>maxy)

{

y=0;


}

if(a==3){

x = x-13;

}
if(x<0) {

temp=maxx%13;x=maxx-temp;

}

if(a==4){
x = x+13; if(x>maxx) x=0;

}

if(a==0)
{

y = y+14 ;

x=x+13;

}


}


}

void check(){

int a;
for(a=1;a<con;a++)

if(m[0]==m[a] && n[0]==n[a])
{
end();

}
else
{

continue;


}

}

void end()
{

int j,i;

setcolor(WHITE);

for(i=0;i<5;i++){

delay(500);
cleardevice();

delay(500);

for(j=0;j<=con;j++){

setfillstyle(SOLID_FILL,RED);
circle(m[j],n[j],5);
floodfill(m[j],n[j],WHITE);

}
}
settextstyle(3,0,4);
outtextxy(150,150," GAME OVER ");

getch();
getch();

exit(0);

}


void win()
{

int j,i;

setcolor(WHITE);

for(i=0;i<5;i++){

for(j=0;j<=con;j++){

setfillstyle(SOLID_FILL,con);


circle(m[j],n[j],5);

floodfill(m[j],n[j],WHITE);

}

delay(500);


cleardevice();

delay(500);

}

settextstyle(3,0,4);

outtextxy(210,320," YOU WIN ");


getch();

exit(0);

}


Note : For more information, you can also visit my other blogs. And don't forget to give your valuable comments.