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

برنامج الرقم السري

مغلق
بدأه حسام الملحم في 24 يناير 2005 · 13 رد · 5,143 مشاهدة · في JavaME
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إليكم هذا البرنامج من إنتاجي...

هذا هو آخر إصدار من برنامج الرقم السري الذي يعمل على الجوالات التي تدعم

Java CLDC 1.0 MIDP 1.0

رقم الإصدار 1.0.2

لعبة عبارة عن لوح به أرقام، والمطلوب فتح القفل بتحويل جميع الأرقام إلى اللون الأخضر بأقل عدد من الضغطات....

لديك خياران في اللعبة:

1- أن تتدرب على قفل وفتح الأرقام.

2- أن تدخل التحدي وتجتاز ال10 مراحل... ما هي أعلى درجة تستطيع الحصول عليها؟؟

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

انتظروا تحميل الصورة....

passcode.GIF

Passcode.zip

تم تعديل هذه المشاركة بواسطة مجدي محمود في 30 يناير 2005 في 17:04

#2

يا اخ ابو مازن انت ما شاء الله مبين عليك محترف في الجافا وهذا البرنامج الذي عجبني ليس اللعبة وانما الاسلوب لاني انا من الناس الذين لا يحبون الالعاب وفي الجهاز الموبايل تبعي لا املك اي لعبة ما ولو انك تضع الكودد ليستفيد منه الاعضاء وتقوم بشرحه افضل حتى يتعلم الاعضاء بكون افضل حسب رايي او كما تريد لك الحق في عدم اظهار الكود اذا اردت ولكننا هنا من اجل ان نتعلم .

انا عندي مشى بدون مشاكل على الجوال وكمان على Wireless Toolkit

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

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

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

#3

يعطيك العافية....

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

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

أما أني محترف جافا فهذا بعيد...

وحاليا أنتظر مشاريع أخرى أبدأها معكم... خاصة وأني في إجازة!!!!

#4

هذه هي الشفرة::

هذا هو الحقل Node والذي يمثل المفتاح (مفتوح أو مغلق) ويتعامل مع الحقول المجاورة له

import java.util.*;

public class Node{

	Vector nodes;
	boolean state;
	int number;

	Node(int number){
  this.number=number;
  nodes=new Vector();
  state=true;
	}
	public Vector linkedNodes(){
  return nodes;
	}
	public Node addNode(Node n){
  nodes.addElement(n);
  return this;
	}

	public void click(){
  switchState();
  Enumeration e=nodes.elements();
  Node n;
  while(e.hasMoreElements()){
 	 n=(Node)e.nextElement();
 	 n.switchState();
  }
	}
	public void switchState(){
  state= !state;
	}

	public boolean getState(){
  return state;
	}
	public void setState(boolean st){
  state=st;
	}
	public int number(){
  return number;
	}
}

هذا هو الراسم الذي يرسم اللوحة:

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

public class PasswordCanvas extends Canvas implements CommandListener{

	int clicks=0;

	int height;
	int width;

	int col;
	int row;
	Vector nodes;
	final int BASE=48;
	Random random;
	Font f=Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE);
	Command help;
	Command rand;
	Command startGame;
	Command exit;
	Command stop;
	Form aboutForm;

	Game game;
	PasswordCanvas(int col, int row){
  aboutForm=new AboutForm(this);
  help=new Command("Íæá ÇáÈÑäÇãÌ", Command.HELP,1);
  rand=new Command("ÞáÈ", Command.OK,1);
  startGame=new Command("áÚÈÉ ÌÏíÏÉ", Command.OK,2);
  stop=new Command("ÅíÞÇÝ", Command.STOP,1);
  exit=new Command("ÎÑæÌ", Command.EXIT,2);
  addCommand(help);
  addCommand(exit);
  random=new Random(System.currentTimeMillis());
  this.col=col;
  this.row=row;
  createNodes();
  linkNodes();
  calculateSize();
  setNormalMode();
  setCommandListener(this);
	}

	private void setNormalMode(){
  removeCommand(stop);
  addCommand(rand);
  addCommand(startGame);
  game=new Game(){
 	 public void varify(){}
 	 public void start(){
    resetNodes();
    repaint();
 	 }
 	 public int score(){return 0;}
  };
  game.start();
	}

	private void setGameMode(){
  removeCommand(rand);
  removeCommand(startGame);
  addCommand(stop);
  game=new Game(){
 	 int level=0;
 	 int score=0;
 	 int clicks=0;
 	 int minimumClicks=0;
 	 public void varify(){
    clicks++;
    Enumeration e=nodes.elements();
    Node n=null;
    boolean win=true;
    while(win & e.hasMoreElements()){
   	 n=(Node)e.nextElement();
   	 win=win&n.getState();
    }
    if(win){
   	 if(clicks==minimumClicks)displayMessage("ããÊÇÒ", 5);
   	 else if(clicks>minimumClicks+4)displayMessage("ãÞÈæá", 1);
   	 else displayMessage("ÌíÏ ÌÏÇ", 3);
   	 start();
    }
 	 }
 	 private void displayMessage(String message, int sc){
    this.score+=sc;
    Codes.display.setCurrent(new Alert("ÇáÏÑÌÉ", message+" "+sc+"   \tÇáãÌãæÚ"+score+"    \t"+"ÇáãÑÍáÉ"+level, null, AlertType.INFO));
 	 }

 	 public void start(){
    if(level==10){
   	 setNormalMode();
   	 return;
    }
    resetNodes();
    level++;
    minimumClicks=random();
    clicks=0;

 	 }
 	 public int score(){
    return score;
 	 }
  };
  game.start();
	}

	public void commandAction(Command c,Displayable d){
  if(c.equals(help))displayHelp();
  else if(c.equals(rand))random();
  else if(c.equals(startGame))setGameMode();
  else if(c.equals(stop))setNormalMode();
  else if(c.equals(exit))exit();
	}
	public void exit(){
  Codes.codes.notifyDestroyed();
	}
	public int random(){
  Vector v=new Vector();
  int ran=(int)random.nextInt(5)+2;
  int n;
  System.out.println("\n"+ran);
  while(v.size()!=ran){
 	 n=(int)random.nextInt(9)+1;

 	 if(!v.contains(new Integer(n))){
    v.addElement(new Integer(n));
    System.out.println(n);
 	 }
  }

  Enumeration e=v.elements();
  int no;
  while(e.hasMoreElements()){
 	 no=((Integer)e.nextElement()).intValue();
 	 getNode(no).click();
  }
  repaint();
  return v.size();


	}
	public void resetNodes(){
  Enumeration e=nodes.elements();
  Node n=null;
  while(e.hasMoreElements()){
 	 n=(Node)e.nextElement();
 	 n.setState(true);
  }
	}
	public void displayHelp(){
  Codes.display.setCurrent(aboutForm);
	}



	private void calculateSize(){
  height=getHeight()/row;
  width=getWidth()/col;
	}
	int getRow(int i){
  int r=(i-1)%row;
  return r;
	}
	int getCol(int i){
  int c=(i-1)/col;
  return c;
	}

	Node getNode(int i){
  return (Node)nodes.elementAt(i-1);
	}
	private void linkNodes(){
  getNode(1).addNode(getNode(2)).addNode(getNode(4));
  getNode(2).addNode(getNode(1)).addNode(getNode(3)).addNode(getNode(5));
  getNode(3).addNode(getNode(2)).addNode(getNode(6));
  getNode(4).addNode(getNode(1)).addNode(getNode(5)).addNode(getNode(7));
  getNode(5).addNode(getNode(2)).addNode(getNode(4)).addNode(getNode(6)).addNode(getNode(8));
  getNode(6).addNode(getNode(3)).addNode(getNode(5)).addNode(getNode(9));
  getNode(7).addNode(getNode(4)).addNode(getNode(8));
  getNode(8).addNode(getNode(5)).addNode(getNode(7)).addNode(getNode(9));
  getNode(9).addNode(getNode(6)).addNode(getNode(8));
	}
	private  void createNodes(){
	/*	nodes=new Node[row][col];
  for(int i=0;i<row;i++)
 	 for(int o=0;0<col;o++)
    nodes[row][col]=new Node(""+((i+1)*(o+1)));
  //*/
  nodes=new Vector();
  for (int i=1;i<col*row+1;i++)
 	 nodes.addElement(new Node(i));

	}

	protected void keyPressed(int keyCode){
  int key=keyCode-BASE;
  try{
 	 getNode(key).click();
 	 clicks++;
 	 game.varify();
  }catch(ArrayIndexOutOfBoundsException e){

 	 //nothing

  }
  repaint();

	}

	public void paint(Graphics g){
  g.setFont(f);
  Enumeration e=nodes.elements();
  Node node;
  g.setColor(0,0,0);
  g.fillRect(0,0,getWidth(),getHeight());
	/*	for(int x=0;x<row;x++)
 	 g.drawLine(x*width, 0, 0,getHeight());
  for(int y=0;y<row;y++)
 	 g.drawLine(0, y*height, getWidth(),0);//*/
  while(e.hasMoreElements()){
 	 node=(Node)e.nextElement();
 	 drawNode(g,node);
  }


	}

	public void drawNode(Graphics g, Node n){
  if(!n.getState())g.setColor(255,0,0);
  else g.setColor(0,255,0);
  int x=getRow(n.number())*width+1;
  int y=getCol(n.number())*height+1;
  g.fillRect(x,y,width-1,height-1);
  g.setColor(0,0,0);
  String name=""+n.number();

  g.drawString(name, x+width/2-f.stringWidth(name),y+height/2-10,0);
	}

}

هذه الواجهة تمثل أسلوب اللعبة (تدريب، أو الخوض في التحدي)

interface Game {
	public void varify();
	public void start();
	public int score();
}

هذا هو نموذج المساعدة أو حول البرنامج

class AboutForm extends Form implements CommandListener{
	Command back;
	Displayable displayable;
	AboutForm(Displayable displayable){
  super("Íæá ÇáÈÑäÇãÌ");
  this.displayable=displayable;
  back=new Command("ÚæÏÉ", Command.EXIT, 1);
  addCommand(back);


  append("ÈÑäÇãÌ ÇáÑÞã ÇáÓÑí");
  append("\n");
  append("ÊØæíÑ ÍÓÇã ÇáãáÍã");
  append("\n");
  append("ÇáÅÕÏÇÑ ÇáÃæá");
  append("\n");
  append("ÌæÇá 0504812912");
  append("\n");
  append("http://faculty.kfupm.edu.sa/MISAC/Hussam/");
  append("\n");
  append("ãÚ ÇáÔßÑ æÇáÊÞÏíÑ ááÝÑíÞ ÇáÚÑÈí ááÈÑãÌÉ");
  append("\n");
  append("www.arabteam2000.com");
  append("\n");
  append(" áÅÕÏÇÑÇÊ ÌÏíÏÉ Ãæ ÈÑÇãÌ ÌÏíÏÉ ÊæÌå Åáì ÇáÕÝÍÇÊ ÇáÓÇÈÞÉ.");
  setCommandListener(this);

	}
	public void commandAction(Command c, Displayable d){
  Codes.display.setCurrent(displayable);
	}

}

هذا هو البرنامج التشغيلي MIDlet

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


public class Codes extends MIDlet {
	static Display display;
	Canvas canvas;
	static Codes codes;
	public void startApp(){
  display=Display.getDisplay(this);
  codes=this;
  canvas=new PasswordCanvas(3,3);
  display.setCurrent(canvas);
	}

    public void pauseApp () {
    notifyPaused();
	}

	public void destroyApp(boolean unconditional) {


	}

}
#5

أي سؤال نحن في الخدمة.....

تم تعديل هذه المشاركة بواسطة أبومازن في 25 يناير 2005 في 14:47

#6

كم أتمنى أن تعرض الشفرة منسقة وليست كما في السابق!! عدم وجود مؤشر الجدول tab بين شفرات البرنامج يجعل من قراءتها صعب في هذا المنتدى..

لهذا إليكم الشفرة في المرفق...

src.zip

#7

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

أنا عاود مشى معي، ولكن من دون حسد ما شاء الله عليك

الله يتمم عليك، وشكراً لوضعك الكود حتى تعم الفائدة

اللهم صل وسلم وزد وبارك على سيدنا محمد وعلى آله وصحبه وسلم

تعلم كيف تقرأ من ملف باستخدام لغة السي

Routers Programming-الدرس الأول

#8

هذا البرنامج يعمل على الجوالات التي تدعم

cldc 1.1 و MIDP 1.0

أريد تغيير هذا لجعله يعمل على

CLDC 1.0 لأن وجدت أن كثيرا من الجوالات لا يدعم CLDC 1.1.

حاليا أستعمل في البرنامج الفئة Random والأمر

random.nextInt(int x);

هذا الأمر هو الوحيد الذي يتطلب CLDC 1.1، فكيف أستخدم أمرا آخر في Random للحصول على رقم عشوائي من 2 إلى 6 باستخدام الأوامر التي في CLDC 1.0?

وشكراً...

#9

بعد النظر إلى شفرة قديمة لبرنامج الصحابة اتضح لي كيف أنتج رقم عشوائي باستخدام Random من إصدار CLDC 1.0

وهي

random.nextInt() % rangeValue;

مع الشكر والتقدير للفريق

وبهذا تم تطوير برنامج الرقم السري ليعمل على الجوالات التي تدعم CLDC 1.0 و MIDP 1.0

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

#10

سؤال:

هل يوجد رابط معين لإرفاق هذا النوع من البرامج؟

وجدت رابطا لتحميل البرامج الإسلامية فقط...!!

#11

تم التعديل اخ ابو مازن كما اردت

اقتباس
هل يوجد رابط معين لإرفاق هذا النوع من البرامج؟

لا حسب رايي مثل هذه البرامج توضع في مواضيع منفصلة ليتم مناقشتها افضل

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

#12

يعطيك العافية....

#13

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

بارك الله فيك يا أخ أبو مازن

مشكور على هذه المشاركات القيمة

#14

آخر إصدار من برنامج الرقم السري:

الإصدار: 2.0

يتفوق هذا الإصدار عن السابق بهذه التحسينات:

1- حفظ أعلى رقم قياسي وصل إليه اللاعب.

2- تنسيق أفضل للبرنامج.

3- إضافة عامل الوقت في السباق!

يعمل هذا البرنامج على جميع الجوالات التي تدعم Java.

إليكم البرنامج مع شفرته.

Passcode.zip

src.zip

هذا الموضوع مغلق.

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