Professional Documents
Culture Documents
G.B. Pant Govt. Engineering College: Department of Computer Science
G.B. Pant Govt. Engineering College: Department of Computer Science
Engineering College
(Govt. of NCT of Delhi)
Okhla Industrial Estate Phase-III, New Delhi-110020
1. Develop a Calculator for Android Platform using any mobile phone 1-4
interface.
2. Develop a Phone Book for Android Platform using any mobile phone 5-8
interface.
3. Develop a Digital Clock for Android Platform using any mobile phone 9-10
interface.
4. Develop a Unit Converter for Android Platform using any mobile phone 11-16
interface.
5. Develop a Text Editor for Android Platform using any mobile phone 17-23
interface.
6. Develop a Tic Tac Toe game for Android Platform using any mobile 24-33
phone interface.
MainActivity.java
package com.example.gfg_my_first_app;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText e1, e2;
TextView t1;
int num1, num2;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// a public method to get the input numbers
public boolean getNumbers()
{
// defining the edit text 1 to e1
e1 = (EditText)findViewById(R.id.num1);
// defining the edit text 2 to e2
e2 = (EditText)findViewById(R.id.num2);
// defining the text view to t1
t1 = (TextView)findViewById(R.id.result);
1
// taking input from text box 1
s1 = e1.getText().toString();
// taking input from text box 2
s2 = e2.getText().toString();
// condition to check if box is not empty
if ((s1.equals(null) && s2.equals(null))
|| (s1.equals("") && s2.equals(""))) {
String result = "Please enter a value";
t1.setText(result);
return false;
}
else {
// converting string to int.
num1 = Integer.parseInt(e1.getText().toString());
// converting string to int.
num2 = Integer.parseInt(e2.getText().toString());
}
return true;
}
// a public method to perform addition
public void doSum(View v)
{
// get the input numbers
if (getNumbers()) {
int sum = num1 + num2;
t1.setText(Integer.toString(sum));
}
}
// a public method to perform power function
public void doPow(View v)
{
// get the input numbers
if (getNumbers()) {
double sum = Math.pow(num1, num2);
t1.setText(Double.toString(sum));
}
}
// a public method to perform subtraction
public void doSub(View v)
2
{
// get the input numbers
if (getNumbers()) {
int sum = num1 - num2;
t1.setText(Integer.toString(sum));
}
}
// a public method to perform multiplication
public void doMul(View v)
{
// get the input numbers
if (getNumbers()) {
int sum = num1 * num2;
t1.setText(Integer.toString(sum));
}
}
// a public method to perform Division
public void doDiv(View v)
{
// get the input numbers
if (getNumbers()) {
// displaying the text in text view assigned as t1
double sum = num1 / (num2 * 1.0);
t1.setText(Double.toString(sum));
}
}
// a public method to perform modulus function
public void doMod(View v)
{
// get the input numbers
if (getNumbers()) {
double sum = num1 % num2;
t1.setText(Double.toString(sum));
}
}
}
3
OUTPUT:
4
Experiment 2
AIM: Develop a Phone Book for Andriod Platform using any mobile phone
interface.
SOURCE CODE:
PhoneBook
package pete.android.study;
import android.graphics.Bitmap;
public class PhoneBook {
private Bitmap mAvatar;
private String mName;
private String mPhone;
private String mEmail;
public PhoneBook(Bitmap avatar, String name, String phone, String email) {
mAvatar = avatar;
mName = name;
mPhone = phone;
mEmail = email;
}
public void setAvatar(Bitmap avatar) {
mAvatar = avatar;
}
public Bitmap getAvatar() {
return mAvatar;
}
public void setName(String name) {
mName = name;
}
public String getName() {
return mName;
}
public void setPhone(String phone) {
mPhone = phone;
}
public String getPhone() {
return mPhone;
}
public void setEmail(String email) {
mEmail = email;
}
5
public String getEmail() {
return mEmail;
}
}
PhoneBookAdapter
package pete.android.study;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class PhoneBookAdapter extends BaseAdapter {
private Context mContext;
private List<PhoneBook> mListPhoneBook;
public PhoneBookAdapter(Context context, List<PhoneBook> list) {
mContext = context;
mListPhoneBook = list;
}
@Override
public int getCount() {
return mListPhoneBook.size();
}
@Override
public Object getItem(int pos) {
return mListPhoneBook.get(pos);
}
@Override
public long getItemId(int pos) {
return pos;
}
@Override
public View getView(int pos, View convertView, ViewGroup parent) {
// get selected entry
PhoneBook entry = mListPhoneBook.get(pos);
6
// inflating list view layout if null
if(convertView == null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(R.layout.phonebook_row, null);
}
// set avatar
ImageView ivAvatar = (ImageView)convertView.findViewById(R.id.imgAvatar);
ivAvatar.setImageBitmap(entry.getAvatar());
// set name
TextView tvName = (TextView)convertView.findViewById(R.id.tvName);
tvName.setText(entry.getName());
// set phone
TextView tvPhone = (TextView)convertView.findViewById(R.id.tvPhone);
tvPhone.setText(entry.getPhone());
// set email
TextView tvEmail = (TextView)convertView.findViewById(R.id.tvEmail);
tvEmail.setText(entry.getEmail());
return convertView;
}
}
Main Activity
package pete.android.study;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView lvPhone;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lvPhone = (ListView)findViewById(R.id.listPhone);
List<PhoneBook> listPhoneBook = new ArrayList<PhoneBook>();
7
listPhoneBook.add(new PhoneBook(
BitmapFactory.decodeResource(getResources(), R.drawable.avatar_pete),
"Pete Houston", "010-9817-6331", "pete.houston.17187@gmail.com"));
listPhoneBook.add(new PhoneBook(
BitmapFactory.decodeResource(getResources(), R.drawable.avatar_lina),
"Lina Cheng", "046-7764-1142", "lina.cheng011@sunny.com"));
listPhoneBook.add(new PhoneBook(
BitmapFactory.decodeResource(getResources(), R.drawable.avatar_jenny),
"Jenny Nguyen", "0913-223-498", "jenny_in_love98@yahoo.com"));
PhoneBookAdapter adapter = new PhoneBookAdapter(this, listPhoneBook);
lvPhone.setAdapter(adapter);
}
}
OUTPUT:
8
Experiment 3
AIM: Develop a Digital Clock for Andriod Platform using any mobile phone
interface.
SOURCE CODE:
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<AnalogClock
android:layout_marginTop="20dp"
android:layout_marginLeft="120dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<DigitalClock
android:layout_marginLeft="140dp"
android:textSize="25dp"
android:layout_marginTop="300dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
MainActivity.java
package org.geeksforgeeks.navedmalik.analogdigital;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
9
}
OUTPUT:
10
Experiment 4
AIM: Develop a unit converter for mobile device using any mobile interface.
SOURCE CODE:
import android.content.Context;
import android.content.SharedPreference;
import android.os.Bundle;
import android.preference.PreferenceManager;
import com.google.android.material.navigation.NavigationView;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import com.physphil.android.unitconverterultimate.fragments.ConversionFragment;
import com.physphil.android.unitconverterultimate.fragments.HelpDialogFragment;
import com.physphil.android.unitconverterultimate.models.Conversion;
import com.physphil.android.unitconverterultimate.presenters.MainActivityPresenter;
import com.physphil.android.unitconverterultimate.presenters.MainActivityView;
import com.physphil.android.unitconverterultimate.util.Conversions;
import com.physphil.android.unitconverterultimate.util.IntentFactory;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO - replace with Dagger2 injection
mPresenter = new MainActivityPresenter(this, this, Preferences.getInstance(this));
Preferences.getInstance(this).getPreferences().registerOnSharedPreferenceChangeListener(th
is);
mConversions = Conversions.getInstance();
// setup language
mPresenter.setLanguageToDisplay();
setContentView(R.layout.activity_main);
11
setupToolbar();
setToolbarHomeNavigation(true);
if (getSupportActionBar() != null)
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_white_24dp);
@Override
public void onDrawerOpened(View drawerView) {
hideKeyboard();
}
@Override
public void onDrawerClosed(View drawerView) {}
@Override
public void onDrawerStateChanged(int newState) {}
});
setupDrawer(getMenuPositionOfConversion(conversion));
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container,
ConversionFragment.newInstance(conversion))
.commit();
}
}
@Override
protected void onStart() {
super.onStart();
@Override
protected void onDestroy() {
super.onDestroy();
Preferences.getInstance(this).getPreferences().unregisterOnSharedPreferenceChangeListener(
this);
12
}
navigationView.setItemBackgroundResource(Preferences.getInstance(this).isLightTheme() ?
R.drawable.navigation_item_background_light :
R.drawable.navigation_item_background);
navigationView.setNavigationItemSelectedListener(new
NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
mDrawerLayout.closeDrawers();
switch (menuItem.getItemId()) {
case R.id.drawer_settings:
PreferencesActivity.start(MainActivity.this);
return true;
default:
menuItem.setChecked(true);
int conversion = getConversionFromDrawer(menuItem.getItemId());
setToolbarTitle(mConversions.getById(conversion).getLabelResource());
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container,
ConversionFragment.newInstance(conversion))
.commit();
return true;
}
}
});
}
@Conversion.id
private int getConversionFromDrawer(int itemId) {
switch (itemId) {
case R.id.drawer_area:
return Conversion.AREA;
case R.id.drawer_cooking:
return Conversion.COOKING;
case R.id.drawer_currency:
return Conversion.CURRENCY;
case R.id.drawer_storage:
return Conversion.STORAGE;
case R.id.drawer_energy:
13
return Conversion.ENERGY;
case R.id.drawer_fuel:
return Conversion.FUEL;
case R.id.drawer_length:
return Conversion.LENGTH;
case R.id.drawer_mass:
return Conversion.MASS;
case R.id.drawer_power:
return Conversion.POWER;
case R.id.drawer_pressure:
return Conversion.PRESSURE;
case R.id.drawer_speed:
return Conversion.SPEED;
case R.id.drawer_temperature:
return Conversion.TEMPERATURE;
case R.id.drawer_time:
return Conversion.TIME;
case R.id.drawer_torque:
return Conversion.TORQUE;
case R.id.drawer_volume:
return Conversion.VOLUME;
}
return Conversion.AREA;
}
14
case Conversion.LENGTH:
return 6;
case Conversion.MASS:
return 7;
case Conversion.POWER:
return 8;
case Conversion.PRESSURE:
return 9;
case Conversion.SPEED:
return 10;
case Conversion.TEMPERATURE:
return 11;
case Conversion.TIME:
return 12;
case Conversion.TORQUE:
return 13;
case Conversion.VOLUME:
return 14;
default:
return 0;
}
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String
key) {
if (key.equals(Preferences.PREFS_THEME)) {
recreate();
}
else if (key.equals(Preferences.PREFS_LANGUAGE)) {
mPresenter.onLanguageChanged();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
return true;
15
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void restartApp() {
startActivity(IntentFactory.getRestartAppIntent(this));
}
// endregion
}
OUTPUT:
16
Experiment 5
AIM :Develop a text editor for mobile device using any mobile interface.
SOURCE CODE
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;
import io.github.mthli.knife.KnifeText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupBold();
17
setupItalic();
setupUnderline();
setupStrikethrough();
setupBullet();
setupQuote();
setupLink();
setupClear();
}
bold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.bold(!knife.contains(KnifeText.FORMAT_BOLD));
}
});
bold.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_bold,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
italic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.italic(!knife.contains(KnifeText.FORMAT_ITALIC));
}
});
italic.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_italic,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
18
ImageButton underline = (ImageButton) findViewById(R.id.underline);
underline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.underline(!knife.contains(KnifeText.FORMAT_UNDERLINED));
}
});
underline.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_underline,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
strikethrough.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.strikethrough(!knife.contains(KnifeText.FORMAT_STRIKETHROUGH));
}
});
strikethrough.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_strikethrough,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
bullet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.bullet(!knife.contains(KnifeText.FORMAT_BULLET));
}
});
19
bullet.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_bullet,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
quote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.quote(!knife.contains(KnifeText.FORMAT_QUOTE));
}
});
quote.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_quote,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
link.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showLinkDialog();
}
});
link.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_insert_link,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
20
private void setupClear() {
ImageButton clear = (ImageButton) findViewById(R.id.clear);
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.clearFormats();
}
});
clear.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_format_clear,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
builder.setPositiveButton(R.string.dialog_button_ok, new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String link = editText.getText().toString().trim();
if (TextUtils.isEmpty(link)) {
return;
}
builder.setNegativeButton(R.string.dialog_button_cancel, new
DialogInterface.OnClickListener() {
@Override
21
public void onClick(DialogInterface dialog, int which) {
// DO NOTHING HERE
}
});
builder.create().show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.undo:
knife.undo();
break;
case R.id.redo:
knife.redo();
break;
case R.id.github:
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(getResources().getString(R.string.app_repo)));
startActivity(intent);
break;
default:
break;
}
return true;
}
}
22
OUTPUT:
23
Experiment 6
AIM: Develop a tic-tac-toe game for mobile device using any mobile interface.
SOURCE CODE:
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;
import io.github.mthli.knife.KnifeText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupBold();
setupItalic();
setupUnderline();
24
setupStrikethrough();
setupBullet();
setupQuote();
setupLink();
setupClear();
}
bold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.bold(!knife.contains(KnifeText.FORMAT_BOLD));
}
});
bold.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_bold,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
italic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.italic(!knife.contains(KnifeText.FORMAT_ITALIC));
}
});
italic.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_italic,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
25
underline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.underline(!knife.contains(KnifeText.FORMAT_UNDERLINED));
}
});
underline.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_underline,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
strikethrough.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.strikethrough(!knife.contains(KnifeText.FORMAT_STRIKETHROUGH));
}
});
strikethrough.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_strikethrough,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
bullet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.bullet(!knife.contains(KnifeText.FORMAT_BULLET));
}
});
bullet.setOnLongClickListener(new View.OnLongClickListener() {
26
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_bullet,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
quote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.quote(!knife.contains(KnifeText.FORMAT_QUOTE));
}
});
quote.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_quote,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
link.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showLinkDialog();
}
});
link.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_insert_link,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
27
ImageButton clear = (ImageButton) findViewById(R.id.clear);
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.clearFormats();
}
});
clear.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_format_clear,
Toast.LENGTH_SHORT).show();
return true;
}
});
}
builder.setPositiveButton(R.string.dialog_button_ok, new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String link = editText.getText().toString().trim();
if (TextUtils.isEmpty(link)) {
return;
}
builder.setNegativeButton(R.string.dialog_button_cancel, new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// DO NOTHING HERE
28
}
});
builder.create().show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.undo:
knife.undo();
break;
case R.id.redo:
knife.redo();
break;
case R.id.github:
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(getResources().getString(R.string.app_repo)));
startActivity(intent);
break;
default:
break;
}
return true;
}
}
Board.java
import java.util.ArrayList;
import java.util.List;
29
int[][] gameBoardArr=new int[3][3];
if (this.gameOver){
copy.gameOver=true;
}else {
copy.gameOver=false;
}
copy.playCounter=Integer.valueOf(this.playCounter);
return copy;
}
if (!gameOver){
//Log.d("Board","placePiece vaild");
int score=0;
switch (getCurrentPlayer()){
case 1:score=1;break;
case 2:score=5;break;
}
switch (position){
case 1: gameBoardArr[0][0]=score; break;
case 2: gameBoardArr[0][1]=score; break;
case 3: gameBoardArr[0][2]=score; break;
case 4: gameBoardArr[1][0]=score; break;
case 5: gameBoardArr[1][1]=score; break;
case 6: gameBoardArr[1][2]=score; break;
case 7: gameBoardArr[2][0]=score; break;
case 8: gameBoardArr[2][1]=score; break;
case 9: gameBoardArr[2][2]=score; break;
default: break;
}
30
playCounter++;
if (getGameResult()!=4){
gameOver=true;
// Log.d("Board","Game Over +Player"+getCurrentPlayer()+"Wins");
}
int gameResult=4;
boolean hasZero=false;
int rowSum=0;
int columnSum=0;
int diagonalSum=0;
int anotherDiagonalSum=0;
//Test Row
for (int i=0;i<3;i++){
rowSum=gameBoardArr[i][0]+gameBoardArr[i][1]+gameBoardArr[i][2];
if (rowSum==15){
return GAME_RESULT_FAIL;
}else if (rowSum==3){
return GAME_RESULT_WIN;
}
}
//Test Column
for (int i=0;i<3;i++){
columnSum=gameBoardArr[0][i]+gameBoardArr[1][i]+gameBoardArr[2][i];
if (columnSum==15){
return GAME_RESULT_FAIL;
}else if (columnSum==3){
return GAME_RESULT_WIN;
}
}
31
//test diagonalSum
diagonalSum=gameBoardArr[0][0]+gameBoardArr[1][1]+gameBoardArr[2][2];
anotherDiagonalSum=gameBoardArr[2][0]+gameBoardArr[1][1]+gameBoardArr[0][2];
if (diagonalSum==3||anotherDiagonalSum==3){
return GAME_RESULT_WIN;
}else if (diagonalSum==15||anotherDiagonalSum==15){
return GAME_RESULT_FAIL;
}
if (!hasZero){
return GAME_RESULT_DRAW;
}
return gameResult;
}
int flag=1;
for (int i=0;i<3;i++){
for (int j=0;j<3;j++){
if (gameBoardArr[i][j]==0){
list.add(flag);
}
flag++;
}
}
//Log.d("Board","AvaliableSolts: "+list.toString());
return list;}}
32
OUTPUT:
33
Experiment 7
AIM: Implement mobile ad-hoc network using NS2.
IMPLEMENTATION:
void Protoname::send_protoname_pkt() {
Packet* p = allocpkt();
struct hdr_cmn* ch = HDR_CMN(p);
struct hdr_ip* ih = HDR_IP(p);
struct hdr_protoname_pkt* ph = HDR_PROTONAME_PKT(p);
ph-&amp;amp;gt;pkt_src() = ra_addr();
ph-&amp;amp;gt;pkt_len() = 7;
ph-&amp;amp;gt;pkt_seq_num() = seq_num_++;
ch-&amp;amp;gt;ptype() = PT_PROTONAME;
ch-&amp;amp;gt;direction() = hdr_cmn::DOWN;
ch-&amp;amp;gt;size() = IP_HDR_LEN +
ph-&amp;amp;gt;pkt_len();
ch-&amp;amp;gt;error() = 0;
ch-&amp;amp;gt;next_hop() = IP_BROADCAST;
ch-&amp;amp;gt;addr_type() = NS_AF_INET;
ih-&amp;amp;gt;saddr() = ra_addr();
ih-&amp;amp;gt;daddr() = IP_BROADCAST;
ih-&amp;amp;gt;sport() = RT_PORT;
ih-&amp;amp;gt;dport() = RT_PORT;
ih-&amp;amp;gt;ttl() = IP_DEF_TTL;
Scheduler::instance().schedule(target_, p, JITTER);
}void
Protoname::reset_protoname_pkt_timer() {
pkt_timer_.resched((double)5.0); }
34
Experiment 8
AIM:Implement AODV routing protocol using NS2/NS2.
IMPLEMENTATION:
int hdr_aodv::offset_;
static class aodvHeaderClass : public PacketHeaderClass {
public: aodvHeaderClass() : PacketHeaderClass("PacketHeader/aodv",
sizeof(hdr_all_aodv)) {
bind_offset(&hdr_aodv::offset_);
}
} class_rtProtoaodv_hdr;
static class aodvclass : public TclClass {
public:
aodvclass() : TclClass("Agent/aodv") {}
TclObject* create(int argc, const char*const* argv) {
assert(argc == 5);
return (new aodv((nsaddr_t) Address::instance().str2addr(argv[4])));
}
} class_rtProtoaodv;
int
aodv::command(int argc, const char*const* argv) {
if(argc == 2) {
Tcl& tcl = Tcl::instance();
if(strncasecmp(argv[1], "id", 2) == 0) {
tcl.resultf("%d", index);
return TCL_OK;
}
if (strncasecmp(argv[1], "dump-table", 10) == 0) {
printf("Node %d: Route table:\n", index);
rtable.rt_dumptable();
return TCL_OK;
}
if(strncasecmp(argv[1], "start", 2) == 0) {
btimer.handle((Event*) 0);
35
#ifndef aodv_LINK_LAYER_DETECTION
htimer.handle((Event*) 0);
ntimer.handle((Event*) 0);
#endif
rtimer.handle((Event*) 0);
return TCL_OK;
}
36