Tuesday, 9 June 2015

Game application in CORBA for which player will guess a number between 1 to 100, which will be compared to the random number generated by the class


Code for Game application in CORBA for which player will guess a number between 1 to 100, which will be compared to the random number generated by the class in Java



 



 



 



 
// Count.idl

module Counter
{
  interface Count
  { 
    attribute long sum;
    long increment();
    double check(indouble a);
  };
}; 


// CountClient.java  

import Counter.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import java.io.*;
class CountClient { 

  static Count countImpl;

  publicstaticvoid main(String args[])
  { try
    {

       // Initialize the ORB

        org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);
        
        // get the root naming context
        org.omg.CORBA.Object objRef = 
        orb.resolve_initial_references("NameService");
        // Use NamingContextExt instead of NamingContext. This is // part of the Interoperable naming Service.  
        NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
 
        // resolve the Object Reference in Naming
        String name = "Count";
        countImpl = CountHelper.narrow(ncRef.resolve_str(name));

      // Set sum to initial value of 0
      countImpl.sum((int)0);

      int choice=0;
      double value1,num;
      BufferedReader b1=new BufferedReader(new InputStreamReader(System.in));
      
            
      while(true)
     {
      System.out.println("Do you want to guess a number(1:Yes / 2:No):");
      choice=Integer.parseInt(b1.readLine());
      if(choice==2)
         break;
      System.out.println("Guess a number and enter that number!!");
      num=Integer.parseInt(b1.readLine());    

      countImpl.increment();


      if(countImpl.sum()==5)
         {
           System.out.println("SORRY YOUR 5 TRIALS ARE OVER");
           System.out.println("Trials = " + countImpl.sum());    
           break;        
         }
 
      value1=countImpl.check(num);

      if(value1==0)
         {
            System.out.println("CONGRATULATIONS!!! GUESSED THE RIGHT NUMBER!!!");
            System.out.println("Trials = " + countImpl.sum());
        break;    
         }

     elseif(value1<0)
         {
            System.out.println("NUMBER is less than the actual no!!!");
            System.out.println("Trials = " + countImpl.sum());
      }

     elseif(value1>0)
         {
            System.out.println("NUMBER is greater than the actual no!!!");
            System.out.println("Trials = " + countImpl.sum());
      }
  
    } 
   }
    catch(Exception e)
    { System.err.println("System Exception");
      System.err.println(e);
    }
  }
}


// CountServer.java: The Count Server main program

import Counter.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import java.util.*;

class CountImpl extends Counter.CountPOA
{

    privateint sum;
    int tempnum;
  // Constructors
  CountImpl(String name)
  {
    super();
    System.out.println("Count Object Created");
    sum = 0;

    Random a=new Random();
    double a1;
    while(true)
     {
       a1=a.nextGaussian()*100;
       if(a1<100 && a1>0)
         break;
     }
    tempnum=(int)a1;
  }

  // get sumpublicint sum()
  { return sum;
  }

  // set sumpublicvoid sum(int val)
  { sum = val;
  }

  // increment methodpublicint increment()
  { sum++;
    return sum;
  }

  publicdouble check(double num)
  {
     return(num-tempnum);
 }

}

class CountServer
{
   staticpublicvoid main(String[] args)
  {
    try
    { 
      // Initialize the ORB
      
       org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);

      // Initialize the BOA

      POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
      rootpoa.the_POAManager().activate();

      // Create the Count object

      CountImpl count = new CountImpl("My Count");

      // get object reference from the servant

      org.omg.CORBA.Object ref = rootpoa.servant_to_reference(count);
      Count href = Counter.CountHelper.narrow(ref);
      
      // get the root naming context// NameService invokes the name service

      org.omg.CORBA.Object objRef =
      orb.resolve_initial_references("NameService");

      // Use NamingContextExt which is part of the Interoperable// Naming Service (INS) specification.

      NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

      // bind the Object Reference in Naming

      String name = "Count";
      NameComponent path[] = ncRef.to_name( name );
      ncRef.rebind(path, href);

      System.out.println("HelloServer ready and waiting ...");

      // wait for invocations from clients
      orb.run();

      }
      catch(Exception e)
      { System.err.println(e);
      }
   }
}


// OUTPUT 1 :

E:\DIPI1\corba prgs\numgame>java CountClient -ORBInitialPort 1050 -ORBInitialHost a

Do you want to guess a number(1:Yes / 2:No):
1
Guess a number and enter that number!!
50
NUMBER is less than the actual no!!!
Trials = 1

Do you want to guess a number(1:Yes / 2:No):
1
Guess a number and enter that number!!
75
NUMBER is greater than the actual no!!!
Trials = 2

Do you want to guess a number(1:Yes / 2:No):
1
Guess a number and enter that number!!
73
NUMBER is greater than the actual no!!!
Trials = 3

Do you want to guess a number(1:Yes / 2:No):
1
Guess a number and enter that number!!
72
CONGRATULATIONS!!! GUESSED THE RIGHT NUMBER!!!
Trials = 4


// OUTPUT 2

E:\DIPI1\corba prgs\numgame>java CountClient -ORBInitialPort 1050 -ORBInitialHos
t a
Do you want to guess a number(1:Yes / 2:No):
1
Guess a number and enter that number!!
23
NUMBER is less than the actual no!!!
Trials = 1

Do you want to guess a number(1:Yes / 2:No):
1
Guess a number and enter that number!!
56
NUMBER is less than the actual no!!!
Trials = 2

Do you want to guess a number(1:Yes / 2:No):
1
Guess a number and enter that number!!
78
NUMBER is greater than the actual no!!!
Trials = 3

Do you want to guess a number(1:Yes / 2:No):
1
Guess a number and enter that number!!
67
NUMBER is greater than the actual no!!!
Trials = 4

Do you want to guess a number(1:Yes / 2:No):
1
Guess a number and enter that number!!
56
SORRY YOUR 5 TRIALS ARE OVER
Trials = 5

No comments:

Post a Comment