الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تفضلوا برنامجي الذي يعمل في الجوال

بدأه حسام الملحم في 9 فبراير 2005 · 20 رد · 7,540 مشاهدة · في JavaME
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم،

إليكم برنامجي الذي يعمل على الجوال...

اسم اللعبة: آخر حبة.

الإصدار: 2.2

برمجة: حسام الملحم.

الوصف: هذه اللعبة تعتمد على الذكاء والحساب. المطلوب أكل آخر حبة من مجموعة الحبوب! ليس المهم عدد ما تأكل من الحبوب لكن الذي يأكل آخر حبة هو الفائز.

عندما يحين دورك تستطيع التهام حبة أو حبتين عن طريق الضغط على الأزرار 1و2 حسب ما تريد وتخطط. (تستطيع زيادة هذا الحد إلى التهام 9 حبوب في المرة الواحدة.)

الإمكانيات:

1-تستطيع مسابقة أخيك أو صديقك.

2-تستطيع مسابقة الحاسب بثلاث مستويات صعوبة! هل تستطيع الفوز على حسام؟

3- تستطيع تحديد عدد الحبوب وحجم اللقمة!

4-إمكانية تكبير أو تصغير الحبوب ليتناسب مع شاشة عرضك.

5-تغيير سرعة عرض اللعبة.

6-يوجد شرح للعبة.

7-سهولة الوصول إلى الأوامر.

المنصات: يعمل هذا البرنامج تحت أي جوال يدعم JAVA CLDC 1.0 MIDP 1.0. (يعمل في جوالات النوكيا مثل 6600، 6610 وغيرها، ومن شركات أخرى غير النوكيا...)

هذه صورة للبرنامج:

LastBean.GIF

وأخرى:

LastBean_8220052259240.197262.GIF

لتحميل آخر إصدار من البرنامج: تفقد الردود في الأسفل المستقبلية لأنها قد تحوي إصدارات أفضل.

لأي سؤال أو استفسار يمكنك مراسلتي هنا أو عبر البريد.

أرجو التعقيب من الذين يجربون البرنامج بتنبيهي إن وجدت أخطاء في اللعبة..

أخطاء مثل: إملائية، نحوية، تشغيلية، رسومية، منطقية، كما نرحب باقتراحاتكم.

البرنامج مرفق....

حسام الملحم....

LastBean_By_Hussam_Al_Mulhim.zip

تم تعديل هذه المشاركة بواسطة أبومازن في 9 فبراير 2005 في 10:20

#2

أرجو من المشرفين وضع وصلة في منتدى الأجهزة الكفية لهذا الموضوع.

بجعل الموضوع (منقولا)...

لا تنسوا حذف هذا الرد!! (لعدم الأهمية)

وأشكركم على جهودكم.

#3

وجدت خطأ غبيا، وهو عندما تضغط على الصفر يضيع دورك...

إليكم الإصدار 2.2.2

الملف مرفق.

LastBean_By_Hussam_Al_Mulhim.zip

#4
اقتباس
أرجو من المشرفين وضع وصلة في منتدى الأجهزة الكفية لهذا الموضوع.

قم بفتح موضوع في قسم الاجهزة الكفية وقم دائما بوضع الاصدارات الجديدة وعندما يصبح مجموع اللعب اكثر من خمسة ساقوم بتثبيت الموضوع .

ضع عنوان الموضوع برامج من انتاج قسم J2ME واي شخص يقوم بعمل اي برنامج غير اسلامي فليقم بوضعه هناك والشفرة اذا وجدت توضع هنا للنقاش.

تم تعديل هذه المشاركة بواسطة مجدي محمود في 9 فبراير 2005 في 20:56

لست متواجد بشكل يومي

#5

شكرا لك أخ مجدي،

لم أقصد تثبيت الموضوع. لكني قصدت نقل الموضوع بأن يظهر هذا الموضوع في ذاك القسم بدون عمل موضوع جديد! فعندما يضغط الشخص عليه في ذاك المنتدى يأتي به إلى هنا. أرجو أني أوضحت الفكرة.

لكني سأعمل بنصيحتك...

الشفرة ستظهر قريبا.

#6

وهذا تطوير آخر للبرنامج..

الإصدار 2.2.4

في الإصدارات السابقة:

كان عليك تغيير حجم الجدول كلما غيرت عدد الحبوب، وهذا من الأمور المملة.

أما في هذا الإصدار: أصبح البرنامج قادرا على عرض أفضل حجم للجدول بنفسه.

LastBean_By_Hussam_Al_Mulhim.zip

#7

هذه هي شفرة البرنامج. وإذا أردت تحميل الملف فهو موجود بالأسفل. كما يسرني استقبال أسئلتكم، وتنبيهاتكم، واقتراحاتكم.

package hussam.wireless.games.beans;
/**
 *
 *@author Hussam-Al-Mulhim
 *@version 2.2.4
 */


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.util.*;

public class LastBean extends MIDlet{
	static Display display;
	static LastBean lastBean;
	public void startApp(){
  lastBean=this;
  display=Display.getDisplay(this);
  Canvas canvas=new BeanCanvas();
  display.setCurrent(canvas);
	}
	public void destroyApp(boolean force){}
	public void pauseApp(){}

}


class TooManyBeansException extends Exception{
	TooManyBeansException(String x){
  super(x);
	}
}
class AvailableBeans{
	int set;
	int total;
	Vector beans;
	AvailableBeans(int amount, int set)throws TooManyBeansException{
  if(amount<set)throw new TooManyBeansException("Batch should be lower than Total amount");
  if(set>9)throw new TooManyBeansException("Beans Batch should be lower than 10.");
  total=amount;
  this.set=set;
  createBeans();
	}
	private void createBeans(){
  beans=new Vector(total);
  
  for(int i=0;i<total;i++){
 	 beans.addElement(new Bean());
  }	
	}
	void restart(){
  createBeans();
	}
	public int getMaximumBatch(){
  return set;
	}
	public int getAvailableBeansCount(){
  return beans.size();
	}
	public Vector getBeans(int amount)throws TooManyBeansException{
  if(amount==0)throw new TooManyBeansException("You cannot have 0 Beans.");
  if(amount>set)
 	 throw new TooManyBeansException("You can have up to "+set+" beans");
  if(hasFinished())throw new TooManyBeansException("Beans have finished");
  if(amount>beans.size())amount=beans.size();
  Vector batchBeans=new Vector();
  for(int i=0;i<amount;i++){
 	 batchBeans.addElement(getBean());
  }
  return batchBeans;
	}
	public boolean hasFinished(){
  return beans.size()==0;
	}
	private Bean getBean(){
  Bean bean=(Bean)beans.elementAt(0);
  beans.removeElementAt(0);
  return bean;
	}


}
class BeanCanvas extends Canvas implements CommandListener{
	static final int BASE=48;
	static final String VERSION="2.2.4";
	private static BeanCanvas beanCanvas;
	private static Display display;

	boolean quickMotion=false;
	BeanDrawer drawer;
	AvailableBeans availableBeans;
	BeanEater eater1, eater2, firstPlayer, secondPlayer;
	Font font=Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);
	int userInput=0;
	Thread gameThread;
	Command changePlayers;
	Command whoIsFirst;
	Command changeGrid;
	Command changeBatch;
	Command restart;
	Command about;
	Command gameHelp;
	Command exit;
	Command quick;
	Game game;
	BeanCanvas(){
  beanCanvas=this;
  setupCommands();
  changePlayers("ÚÈÏÇááå", "", 1);
  try{
 	 changeBatch(20,2);
  }catch(TooManyBeansException e){
 	 e.printStackTrace();
  }
  startGame();
  display=LastBean.display;
	}
	private void setupCommands(){
  changePlayers=new Command("ÊÛííÑ ÇááÇÚÈ", Command.ITEM, 1);
  changeGrid=new Command("ÍÌã ÇáÔÈßÉ", Command.ITEM, 1);
  changeBatch=new Command("ãÓÇÝÉ ÇáæÕæá æÇáÞÝÒ", Command.ITEM, 1);
  whoIsFirst=new Command("ÊÛííÑ ãä íáÚÈ ÃæáÇ", Command.ITEM, 1);
  restart=new Command("ÅÚÇÏÉ ÇááÚÈÉ", Command.OK, 1);
  about=new Command("Íæá ÇáÈÑäÇãÌ", Command.HELP, 1);
  gameHelp=new Command("ãÓÇÚÏÉ", Command.HELP, 1);
  exit=new Command("ÎÑæÌ", Command.EXIT, 1);
  quick=new Command("ÊÛííÑ ÇáÓÑÚÉ", Command.ITEM, 2);
  addCommand(changePlayers);
  addCommand(changeBatch);
  addCommand(whoIsFirst);
  addCommand(restart);
  addCommand(quick);
  addCommand(changeGrid);
  addCommand(about);
  addCommand(gameHelp);
  addCommand(exit);
  setCommandListener(this);
	}
	public void exit(){
  LastBean.lastBean.notifyDestroyed();
	}
	public void changeBatch(int amount, int batch)throws TooManyBeansException{
  
  availableBeans=new AvailableBeans(amount, batch);
  int row=200;
  int col=200;
  int minimum=10000;
  for(int i=50;i>=1;i--){
 	 for(int o=50;o>=1;o--){
    if((i*o)>=amount&minimum>(i+o)){
   	 row=o;
   	 col=i;
   	 minimum=row+col;
    }
 	 }
  }
  setTable(col,row);
	}
	public void changePlayers(String name, String other, int type){
  eater1=new BeanEater(name);
  switch (type){
 	 case 0: eater2=new BeanEater(other);
 	 break;
 	 case 1: eater2=new RandomEater();
 	 break;
 	 case 2: eater2=new LittleBitSmartEater();
 	 break;
 	 case 3: eater2=new HussamEater();
 	 break;
  }
  firstPlayer=eater1;
  secondPlayer=eater2;
	}
	private void switchPlayers(){
  BeanEater b=firstPlayer;
  firstPlayer=secondPlayer;
  secondPlayer=b;
	}
	protected BeanEater firstPlayer(){
  return firstPlayer;
	}
	protected BeanEater secondPlayer(){
  return secondPlayer;
	}
	protected BeanEater otherPlayer(BeanEater b){
  if(b==firstPlayer())return secondPlayer();
  return firstPlayer();
	}
	public void setTable(int col, int row){
  if(col<1|row<1)throw new RuntimeException("Table row and col should be positive integers.");
  drawer=new BeanDrawer(col, row);
	}
	public void startGame(){
  if(game!=null)game.finish();
  synchronized(firstPlayer()){
 	 firstPlayer().notifyAll();
  }synchronized(secondPlayer()){
 	 secondPlayer().notifyAll();
  }
//  System.out.println("NOTIFIED ALL");
  game=new Game(){
 	 BeanEater player=firstPlayer();
 	 boolean finished=false;
 	 public boolean isFinished(){
    return finished;
 	 }
 	 public void start(){
    System.out.println("New Game>>>>>>>>>>");
    System.out.println(eater1.beans().size()+"\t"+eater2.beans.size());
    new Thread(new Runnable(){
	//    BeanEater player;
   	 public void run(){
      availableBeans.restart();
      firstPlayer().restart();
      secondPlayer().restart();
      while(!isFinished()){
     	 if(availableBeans.hasFinished()){
        swap();
        LastBean.display.setCurrent(new Alert("ÇáÝÇÆÒ",player.name(),null, AlertType.INFO));
        finish();
        return;
     	 }
     	 repaint();
     	 player().play();
     	 System.out.println(player().name()+" Has Played.");
     	 swap();
      }	
   	 }
      
    }).start();
 	 }
 	 private void swap(){
    if(player==firstPlayer())player=secondPlayer();else player=firstPlayer();
 	 }
 	 
 	 public void finish(){
    finished=true;
 	 }
 	 public BeanEater player(){
    return player;
 	 }
  };
  game.start();  
    
//  nextEater();
	}
	interface Game{
  void start();
  void finish();
  BeanEater player();
  boolean isFinished();
	}
	private Game game(){
  return game;
	}
	public final void play(final BeanEater eater, final int amount){
  final Canvas canvas=this;
  if(quickMotion){
 	 try{
    eater.eatBeans(availableBeans.getBeans(amount));
    repaint();
//    nextEater();
 	 }catch(TooManyBeansException e){
    e.printStackTrace();
    eater.play();
 	 }
 	 
 	 
 	 return;
  }//*/
  Thread motion=new Thread(new Runnable(){
 	 
 	 public void run(){
	// 	 nextEater();
    try{
   	 for(int i=0;i<amount;i++){
      eater.eatBeans(availableBeans.getBeans(1));
      
      try{
     	 Thread.currentThread().sleep(250);
      }catch(InterruptedException e){
     	 e.printStackTrace();
      }
      eater.lastPlay=amount;
      repaint();
      
   	 }
   	 synchronized(canvas){
      canvas.notify();
   	 }
    }catch(TooManyBeansException e){
   	 e.printStackTrace();
    }
    
 	 }
 	 
  });
  
  motion.start();
  synchronized(canvas){
 	 try{
    canvas.wait();
 	 }catch(Exception e){
    e.printStackTrace();
 	 }
  }
  
	}

	public void keyPressed(int key){
  userInput=key-BASE;
  if(userInput>9|userInput<1)return;
  synchronized(game.player()){
 	 game.player().notify();
  }
	}
	public int getUserInput(){
  
  return userInput;
 	 
	}
  
/*
	BeanEater nextEater(){
  final BeanEater b=currentEater;
  new Thread(new Runnable(){
 	 public void run(){
    currentEater.play();
    if(availableBeans.hasFinished()){
   	 LastBean.display.setCurrent(new Alert("ÇáÝÇÆÒ",currentEater.name(),null, AlertType.INFO));
 	 //  return currentEater;
    }
    if(currentEater==eater1)currentEater=eater2;
    else currentEater=eater1;
 	 }
  }).start();

  return currentEater;
	}
//*/	
	public int getTableHeight(){
//  return getHeight();
  return getHeight()-2*font.getHeight();
	}
	public int getTableWidth(){
  return getWidth();
	}
	public int getFirstRowPosition(){
	//	return 0;
  return 1*font.getHeight();
	}
	public int getFirstColPosition(){
  return 0;
	}
	public void paint(Graphics g){
  g.setFont(font);
  g.setColor(0,0,0);
  g.fillRect(0,0,getWidth(),getHeight());

  drawer.startOver();
  
  g.setColor(255,0,0);
  drawer.paint(g, eater1.beans().size());
    
  g.setColor(0,255,0);
  drawer.paint(g,availableBeans.getAvailableBeansCount());
  
  g.setColor(0,0,255);
  drawer.paint(g, eater2.beans().size());
  
/*  g.drawString(game().player().name()+"'s turn. "+
 	 availableBeans.getAvailableBeansCount()+" beans remaining. "+
 	 "Max: "+availableBeans.getMaximumBatch(), 0, 0, 0);
  g.drawString(
 	 eater1.name()+
 	 ".\t Ate: "+eater1.beans().size()+
 	 "\t Last play: "+eater1.lastPlay(), 0,font.getHeight(),0);
  g.drawString(
 	 eater2.name()+
 	 ".\t Ate: "+eater2.beans().size()+
 	 "\t Last play: "+eater2.lastPlay(), 0,getHeight()-font.getHeight(),0);
 	 
//*/	
  String up="ÏæÑ: "+
  game().player().name()+".  "+
  "ÇáÍÏ ÇáÃÞÕì: " + availableBeans.getMaximumBatch();
  String down="ÇáÈÇÞí: " + availableBeans.getAvailableBeansCount()+".  "+
  " ÂÎÑ áÚÈÉ: "+otherPlayer(game().player()).lastPlay()+".";
 	 
  g.setColor(0,0,0);
  g.fillRect(0,0, font.stringWidth(up), font.getHeight());
  g.fillRect(0, getHeight()-font.getHeight(), font.stringWidth(down), font.getHeight());
  g.setColor(255,255,255);
  g.drawString(up, 0,0,0);
  g.drawString(down, 0,getHeight()-font.getHeight(),0);

  
	}




	public class BeanDrawer{
  int beanHeight;
  int beanWidth;
  int position=0;
  int col,row;
  BeanDrawer(int x,int y){
 	 col=x;
 	 row=y;
 	 beanHeight=(int)(getTableHeight()/row);
 	 beanWidth=(int)(getTableWidth()/col);
  }
  public void startOver(){
 	 position=0;
  }
  public void paint(Graphics g, int boxes){
 	 int total=position+boxes;
 	 int color=g.getColor();
 	 while(position!=total){
    int c=(position%col);//
    int r=(position/col);//
  //  System.out.println(position%col+"\t"+position/row);
    g.setColor(color);
	// 	 g.fillRect(c*beanWidth,r*beanHeight+getFirstRowPosition(),beanWidth-1, beanHeight-1);
	// 	 g.setColor(200);
    g.fillArc(c*beanWidth,r*beanHeight+getFirstRowPosition(),beanWidth-1, beanHeight-1, 0, 360);
    g.setColor(0,0,0);
    String word= String.valueOf(position+1);
	// 	 g.drawString(word, c*beanWidth+beanWidth/2-font.stringWidth(word)/2,r*beanHeight+getFirstRowPosition()+beanHeight/2-font.getHeight()/2,0);
    position++;
 	 }
 	 
  }
	}
	public void commandAction(Command c, Displayable d){
  if(c==restart)startGame();
  else if(c==changeGrid)ChangeGridForm.start();
  else if(c==changeBatch){ChangeBatchForm.start();}
  else if(c==changePlayers){ChangePlayerForm.start();}
  else if(c==about)AboutForm.start();
  else if(c==quick)quickMotion=!quickMotion;
  else if(c==gameHelp)GameHelpForm.start();
  else if(c==whoIsFirst){ChangeWhoIsFirstForm.start();}
  else if(c==exit)exit();
  
	}

	static class ChangeGridForm extends Form implements CommandListener{
  TextField col,row;
  Command back, ok;
  static Form form=new ChangeGridForm();
  ChangeGridForm(){
 	 super("ÊÛííÑ ÍÌã ÇáãÑÈÚÇÊ");
 	 col=new TextField("ÚÏÏ ÇáÃÚãÏÉ", 10+"", 2, TextField.NUMERIC);
 	 row=new TextField("ÚÏÏ ÇáÕÝæÝ", 10+"", 2,TextField.NUMERIC);
 	 append(col);
 	 append(row);
 	 append("ÊÃßÏ ÈæÖÚ Þíã ÃßÈÑ ãä ÇáÕÝÑ.");
 	 back=new Command("ÑÌæÚ",Command.BACK, 1);
 	 ok=new Command("ãæÇÝÞ",Command.OK, 1);
 	 addCommand(ok);
 	 addCommand(back);
 	 setCommandListener(this);
  }
  
  public void commandAction(Command c, Displayable d){
 	 if(c==ok){
    try{
   	 beanCanvas.setTable(Integer.parseInt(col.getString()), Integer.parseInt(row.getString()));
   	 display.setCurrent(beanCanvas);
    }catch(RuntimeException e){
   	 e.printStackTrace();
    }
 	 }else if(c==back){
    display.setCurrent(beanCanvas);
 	 }
  }
  public static void start(){
 	 display.setCurrent(form);
  }
	}
	static class ChangeBatchForm extends Form implements CommandListener{
  TextField amount,batch;
  Command back, ok;
  static Form form=new ChangeBatchForm();
  ChangeBatchForm(){
 	 super("ÊÛííÑ ÚÏÏ ÇáÍÈæÈ");
 	 amount=new TextField("ÚÏÏ ÇáÍÈæÈ Çáßáí", ""+30, 3, TextField.NUMERIC);
 	 batch=new TextField("ÃÚáì ÍÏ ááÃßá ", ""+3, 1,TextField.NUMERIC);
 	 append(amount);
 	 append(batch);
 	 append("ÊÃßÏ Ãä ÚÏÏ ÇáÍÈæÈ íÌÈ Ãä íßæä ÃßÈÑ ãä ÍÏ ÇáÃßá.");
 	 append("\n");
 	 append("ßãÇ Ãä ÇáÍÏ íÌÈ Ãä íßæä ÃÞá ãä ÇáÚÔÑÉ.");
 	 append("\n");
 	 append("ÅÐÇ ßÇä ÚÏÏ ÇáÍÈæÈ ßÈíÑÇ¡ áÇ ÊäÓ ÊÛííÑ ÍÌã ÇáÕÝÍÉ ÈÚÏ Ðáß!");
 	 back=new Command("ÑÌæÚ",Command.BACK, 1);
 	 ok=new Command("ãæÇÝÞ",Command.OK, 1);
 	 addCommand(ok);
 	 addCommand(back);
 	 setCommandListener(this);
  }
  
  public void commandAction(Command c, Displayable d){
 	 if(c==ok){
    try{
   	 beanCanvas.changeBatch(Integer.parseInt(amount.getString()), Integer.parseInt(batch.getString()));
   	 beanCanvas.startGame();
   	 display.setCurrent(beanCanvas);
    }catch(Exception e){
   	 e.printStackTrace();
    }
 	 }else if(c==back){
    display.setCurrent(beanCanvas);
 	 }
  }
  public static void start(){
 	 display.setCurrent(form);
  }
	}
	static class ChangePlayerForm extends Form implements CommandListener{
  TextField name,other;
  ChoiceGroup choice;
  Command back, ok;
  static  final Form form=new ChangePlayerForm();
  public static void start(){
 	 display.setCurrent(form);
  }
  ChangePlayerForm(){
 	 super("ÊÛííÑ ÍÌã ÇáãÑÈÚÇÊ");
 	 name=new TextField("ÇááÇÚÈ ÇáÃæá", "ÚÈÏÇááå", 20, TextField.ANY);
 	 other=new TextField("ÇááÇÚÈ ÇáËÇäí","ÎÇáÏ", 20,TextField.ANY);
 	 String[]items= {"ÔÎÕ","ÍÇÓÈ ÛÈí","ÍÇÓÈ Ðßí", "ÍÓÇã"};
 	 choice=new ChoiceGroup("äæÚ ÇááÇÚÈ ÇáËÇäí", ChoiceGroup.EXCLUSIVE,items, null);
 	 back=new Command("ÑÌæÚ", Command.BACK, 1);
 	 ok=new Command("ãæÇÝÞ",Command.OK, 1);
 	 append(name);
 	 append(other);
 	 append(choice);
 	 addCommand(ok);
 	 addCommand(back);
 	 setCommandListener(this);
  }
  
  public void commandAction(Command c, Displayable d){
 	 if(c==ok){
    try{
   	 beanCanvas.changePlayers(name.getString(), other.getString(), choice.getSelectedIndex());
   	 beanCanvas.startGame();
   	 display.setCurrent(beanCanvas);
    }catch(RuntimeException e){
   	 e.printStackTrace();
    }
 	 }else if(c==back){
    display.setCurrent(beanCanvas);
 	 }
  }
  
	}
	static class ChangeWhoIsFirstForm extends Form implements CommandListener{
  Command back, ok;
  static  final ChangeWhoIsFirstForm form=new ChangeWhoIsFirstForm();
  public static void start(){
 	 form.update();
 	 display.setCurrent(form);
  }
  ChangeWhoIsFirstForm(){
 	 super("ãä íáÚÈ ÃæáÇ¿");
 	 back=new Command("ÑÌæÚ", Command.BACK, 1);
 	 ok=new Command("ÊÛííÑ",Command.OK, 1);
// 	 update();
 	 addCommand(ok);
 	 addCommand(back);
 	 setCommandListener(this);
  }
  private void update(){
 	 try{
    delete(0);
    delete(0);
 	 }catch(IndexOutOfBoundsException e){
    System.out.println(e.getMessage());
 	 }
 	 append("ÇááÇÚÈ ÇáÃæá: "   +beanCanvas.firstPlayer().name());
 	 append("ÇááÇÚÈ ÇáËÇäí: "   +beanCanvas.secondPlayer().name());
  }
  
  public void commandAction(Command c, Displayable d){
 	 if(c==ok){
    try{
   	 beanCanvas.switchPlayers();
   	 form.update();
    }catch(RuntimeException e){
   	 e.printStackTrace();
    }
 	 }else if(c==back){
    beanCanvas.startGame();
    display.setCurrent(beanCanvas);
 	 }
  }
  
	}
	static class AboutForm extends Form implements CommandListener{
  Command back;
  static Form form=new AboutForm();
  AboutForm(){
 	 super("Íæá ÇáÈÑäÇãÌ");
 	 back=new Command("ÑÌæÚ",Command.BACK, 1);
 	 append("ÈÑäÇãÌ ÂÎÑ ÍÈÉ");
 	 append("\n");
 	 append("ÊØæíÑ ÍÓÇã ÇáãáÍã");
 	 append("\n");
 	 append("ÇáÅÕÏÇÑ");
 	 append(VERSION);
 	 append("\n");
 	 append("ÌæÇá 0504812912");
 	 append("\n");
 	 append("ÇáãÑÓÇá: ");
 	 append("hussam@kfupm.edu.sa");
 	 append("\n");
 	 append("Ãæ: ");
 	 append("hmulhim@gawab.com");
 	 append("\n");
 	 append("áÛíÑåÇ ãä ÇáÈÑÇãÌ ÊæÌå Åáì");
 	 append("\n");
 	 append("http://faculty.kfupm.edu.sa/MISAC/Hussam/");
 	 append("\n");
 	 append("ãÚ ÇáÔßÑ æÇáÊÞÏíÑ ááÝÑíÞ ÇáÚÑÈí ááÈÑãÌÉ");
 	 append("\n");
 	 append("www.arabteam2000.com");
 	 append("\n");
 	 append(" áÅÕÏÇÑÇÊ ÌÏíÏÉ Ãæ ÈÑÇãÌ ÌÏíÏÉ ÊæÌå Åáì ÇáÕÝÍÇÊ ÇáÓÇÈÞÉ.");
 	 addCommand(back);
 	 setCommandListener(this);
  }
  
  public void commandAction(Command c, Displayable d){
 	 if(c==back){
    display.setCurrent(beanCanvas);
 	 }
  }
  public static void start(){
 	 beanCanvas.startGame();
 	 display.setCurrent(form);
  }
	}
	static class GameHelpForm extends Form implements CommandListener{
  Command back;
  static Form form=new GameHelpForm();
  GameHelpForm(){
 	 super("ãÓÇÚÏÉ");
 	 back=new Command("ÑÌæÚ",Command.BACK, 1);
 	 append("ÍÇæá Ãßá ÂÎÑ ÍÈÉ: ßãÇ ÊÚÑÝ ÝÅä ÂÎÑ ÍÈÉ åí ÃáÐ ÍÈÉ¡ áÐáß ÊæÌÈ Úáíß Ãä ÊÎØØ áÊÃßá ÂÎÑ ÍÈÉ.");
 	 append("\n");
 	 append("ßáãÇ ÌÇÁ ÏæÑß¡ ÊÓÊØíÚ ÇáÊåÇã ãä ÍÈÉ Åáì ÇáÚÏÏ ÇáãÊÝÞ Úáíå ãÓÈÞÇ.");
 	 append("\n");
 	 append("ÊÓÊØíÚ ãÈÇÑÇÉ ÃÎ áß Ãæ ÇáÍÇÓÈ Ãæ Ãä ÊÊÍÏì ÍÓÇãÇ ÈäÝÓå.");
 	 append("\n");
 	 append("ãä ÎáÇá ÇáÎíÇÑÇÊ ÊÓÊØíÚ ÊÛííÑ ÍÌã ÇáØÇæáÉ æÚÏÏ ÇáÍÈÇÊ æÚÏÏ ãÇ ÊÓÊØíÚ ÇáÊåÇãå Ýí ÇáãÑÉ ÇáæÇÍÏÉ.");
 	 append("\n");
 	 append("åá ÊÓÊØíÚ Ãä ÊÃßáåÇ¿");
 	 addCommand(back);
 	 setCommandListener(this);
  }
  
  public void commandAction(Command c, Displayable d){
 	 if(c==back){
    display.setCurrent(beanCanvas);
 	 }
  }
  public static void start(){
 	 display.setCurrent(form);
  }
	}

	class RandomEater extends BeanEater{
  Random random;
  RandomEater(){
 	 this("ÍÇÓÈ ÛÈí");
  }
  RandomEater(String name){
 	 super(name);
 	 random=new Random();
  }
  protected int compute(){
 	 return Math.abs(random.nextInt())%availableBeans.getMaximumBatch()+1;
 	 
  }
	}
	class LittleBitSmartEater extends HussamEater{
  LittleBitSmartEater(){
 	 super("ÍÇÓÈ Ðßí");
  }
  protected int compute(){
 	 final Game thisGame=game();
 	 int amount=availableBeans.getAvailableBeansCount();
 	 int batch=availableBeans.getMaximumBatch();
 	 if(amount<=batch*3)super.compute();
 	 return Math.abs(random.nextInt())%availableBeans.getMaximumBatch()+1;
  }
  
	}
	class HussamEater extends RandomEater{
  HussamEater(String name){
 	 super(name);
  }
  HussamEater(){
 	 this("ÍÓÇã");
  }
  protected int compute(){
 	 final Game thisGame=game();
 	 int amount=availableBeans.getAvailableBeansCount();
 	 int batch=availableBeans.getMaximumBatch();
 	 int play=amount%(batch+1);
	//  if(thisGame.isFinished())return;
 	 if(play==0)return super.compute();
 	 else return play;
  }
	}

	class BeanEater{
  Vector beans;
  String name;
  int lastPlay=0;
  boolean play=true;
  BeanEater(String name){
 	 this.name=name;
 	 beans=new Vector();
  }
  void restart(){
 	 beans.removeAllElements();
  }
  public final void play(){
 	 int no=compute();
 	 if(no==0)return;
 	 BeanCanvas.this.play(this, no);
  }
  protected int compute(){
 	 final Game thisGame=game();
 	 System.out.println(play);
 	 if(!play)return 0;
 	 
 	 synchronized(this){
    try{
   	 play=false;
   	 System.out.println(name+"is waiting....");
   	 wait();
   	 play=true;
   	 if(thisGame.isFinished())return 0;
    }catch(InterruptedException e){
   	 e.printStackTrace();
   	 return 0;
    }
    System.out.println(name+" is Notified..");
    return getUserInput();
 	 }
 	 
  }
  void eatBeans(Vector beans){
 	 lastPlay=beans.size();
 	 Enumeration e=beans.elements();
 	 while(e.hasMoreElements()){
    this.beans.addElement(e.nextElement());
 	 }
 	 
  }
  public Vector beans(){
 	 return beans;
  }
  public int lastPlay(){
 	 return lastPlay;
  }
  public String name(){
 	 return name;
  }
  public String toString(){
 	 return name+" has "+beans.size()+" beans.";
  }
	}
}





class Bean{
	int color;
	static final int EMPTY=0;
	static final int BLACK=1;
	static final int WHITE=2;
	static final int BEAN=3;
	Bean(){
  
	}
	void setType(int type){
  color=type;
	}
	int getType(){
  return color;
	}

}

الشفرة في الملف المرفق.

LastBean.java

#8

الإصدار 2.2.5...

تصحيح الأخطاء السابقة في الإصدار 2.2.4:

1- عندما يتناول اللاعب أكثر من الحبوب الموجودة في الجدول لا يبين البرنامج من هو الفائز. وبعد هذا يتوقف البرنامج من استقبال الإدخالات الجديدة!!

إليكم البرنامج في الملف المرفق.

LastBean_By_Hussam_Al_Mulhim.zip

#9

جميل جداً (أبومازن)

..................بسم الله الرحمن الرحيم..................

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

التحكم بمنفذ الطابعة عن طريق الدلفي

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

#10

لاحظت أن هذا البرنامج بالذات لم يعمل في أنظمة السمبيان مثل جوالات الباندا، والدمعة وغيرهما.

غيرت قليلا في البرنامج، أحب ممن لديه أي نوع من هذه الجوالات تجربة الإصدار هذا، ويخبرني إن كان يعمل البرنامج في جهازه.

ملاحظة: من يريد تحميل البرنامج عليه بالإصدار 2.2.5 الخالي من الأخطاء الموجود في الرد السابق حتى إشعار آخر.

bin.zip

تم تعديل هذه المشاركة بواسطة أبومازن في 15 مارس 2005 في 10:29

#12

eng_ibr هل جربت البرنامج في جوال سمبيان؟ ماهي أول صفحة ظهرت لك وأنت تشغل البرنامج؟ ماهو نوع جوالك بالضبط. أفدني جزاك الله خيرا.

أحب أن أسمع آراء من جربوا الإصدار التجريبي في ردي السابق. هل يعمل على جوالات النوكيا سمبيان، مثل الدمعة والباندا؟؟

أشكركم على مشركاتكم.

#13

عرفت الخطأ، وهو ليس خطأ في برنامجي، لكنه خطأ في نظام السمبيان! فهو لا يقرأ ملف المانيفست جيدا!

على العموم، أصلحت الخطأ. البرنامج الآن يعمل على جميع أنظمة السمبيان. وجميع الجوالات التي تدعم الجافا.

إليكم الإصدار 2.56

الفرق بينه والإصدار 2.55: الإصدار القديم لا يعمل على أنظمة السمبيان!

ولكن هذا الإصدار يعمل عليها!!

إليكم البرنامج في الملف المرفق:

LastBean.zip

#14

بسم الله الرحمن الرحيم

أشكرك على هذا الجهد الرائع ، وعلى حبك للعطاء ، وبصراحة أنا مستغرب من قلة الردود على هذا الموضوع الرائع .

صدقا انا لم أجرب البرنامج حتى الآن ولكن عندما قرأت الموضوع واهتمامك بتحديث البرنامج ، خصوصا مع قلة الردود والمشاركات .

أود السؤال عن نظام السيمبيان ، أرجو منك أن تشرح لي المشكلة بشكل أكثر وكيفية الحل ، لأنني الآن أعمل على برنامج ، والمشكلة أنه لا يعمل بشكل جيد على الخلوي ( الدب ) .

حيث تعمل بعض الشاشات وبعضها لا يعمل .

تحياتي لك .

والسلام عليكم ورحمة الله وبركاته .

********************* ******************** *********************

(( أشــهد أن لا اله الا الله ..... وأشهد أن محمد رسول الله ))

********************* ******************** *********************

لا تقـل من أيـن أبدأ

طـاعـة الله الـبدايـة

***

لا تقـل أين طـريـقي

شــرع الله الهـدايـة

***

لا تـقـل أيـن نعـيمي

جـنـة الله كـفـايـــــة

***

لا تقـل في الغـد أبدأ

ربمـــا تأتـي النهـايـــة

**************** **************** ****************

#15

على فكره البرنامج الذي أعمل عليه يختلف كثيرا عن برنامجك فهو دليل تلفونات أي أنه لا يعتمد على الواجهة الرسومية كثيرا.

( أقصد الرسم )

وهو موجود في المنتدى في موضوع

( اجراء اتصال هاتفي )

والسلام عليكم

تم تعديل هذه المشاركة بواسطة البريشي في 20 أبريل 2005 في 12:49

********************* ******************** *********************

(( أشــهد أن لا اله الا الله ..... وأشهد أن محمد رسول الله ))

********************* ******************** *********************

لا تقـل من أيـن أبدأ

طـاعـة الله الـبدايـة

***

لا تقـل أين طـريـقي

شــرع الله الهـدايـة

***

لا تـقـل أيـن نعـيمي

جـنـة الله كـفـايـــــة

***

لا تقـل في الغـد أبدأ

ربمـــا تأتـي النهـايـــة

**************** **************** ****************

#16

المشاكل التي واجهتها كانت في اللغة العربية وصنع ملفات الجاد بالعربية. لكني حللت أكثرها. وبقي القليل!

#17

الإصدار 2.8 من لعبة آخر حبة.

يتفوق بميزة بسيطة عن الإصدار السابق أنه يحفظ اسم اللاعب (اسمك)، حيث لا يحتاج أن تكتب اسمك في كل مرة تشغل فيها البرنامج.

LastBean.zip

#18

عمل رائع يا ابو مازن

;)

11_03_06_12_48_57_1142110137Image(_66).jpg

#19

نأسف للخطأ الموجود في الإصدار 2.8.

فهو لا يحفظ أسماء اللاعبين بشكل جيد!

الإصدار 2.81

به تصليح لحفظ الأسماء.

الرجاء تحميل هذا الأخير.

وإن وجدت أخطاء أخرى، أو إضافات تحبون إضافتها على البرنامج، الرجاء عدم التردد في ذكرها.

كما أني أتشوق لمعرفة من منكم فاز على المستوى الصعب!!

LastBean.zip

#20

رائعة جدا

جزاك الله الف خير

سأجربها على جوالي و أوافيك بالنتيجة

#21

رائعة

ما استطعت الفوز على حاسب ذكي

مواضيع مشابهة