Logo 
Search:

Java Articles

Submit Article
Home » Articles » Java » CorbaRSS Feeds

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

Posted By: Milind Mishra     Category: Java     Views: 5048

Develop a game application in CORBA for which the player will guess a number between 1 to 100, which will be compared to the random number generated by the class located at the server. The server will send the message with hint either ‘lower’ or ‘higher’ to help the player. If the number guessed by the player is same as the chosen number by the bean, then appropriate message is displayed. It will also display the number of the trials.

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
  
Share: 



Milind Mishra
Milind Mishra author of 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 is from India.
 
View All Articles

 
Please enter your Comment

  • Comment should be atleast 30 Characters.
  • Please put code inside [Code] your code [/Code].

 
No Comment Found, Be the First to post comment!