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

عاجل........ أرجو المساعدة

مغلق
بدأه smart99 في 13 مايو 2004 · 9 رد · 797 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أنا احاول كتابة برنامج للعبة الذاكرة ومشكلتي تكمن في كيفية وضع ( method ) تقوم بمقارنة اي صورتين افتحها بالضغط عليها بالفاره فإذا تتطابقتا تبقى الصورتان مفتوحتان واذا لم تتطابق تنغلق مره اخرى على وضعها المخفي

وشكرا.......................................

#2

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

ملاحظة: عنوان موضوعك مخالف

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#3

اسف على مخالفة القوانين في العنوان

و بالنسبة للكود سوف اضيفه في اليومين القادمين لانني لم اصل بعد للمرحله التي اسال عنها

تحياتي.....................................

#4

حبيت اسهل االشغله شوي وغيرت مفهوم البرنامج من صور الى ازرار بحيث كل ما اضغط على زرين متتاليين تكون على النحو التالي:

اذا كان الزران نفس اللون لا تتغير واذا لم يكونا نفس اللون ترجع الى حالتها الأصليه بدون لون

وهذا هو الكود كامل وكل ما اريده ( ما هي الزيادة التي يجب ان اضيفها عليه حتى ينفذ الطريقه التي في الاعلى)

import javax.swing.*; 
import java.awt.*;
import java.awt.event.*;

public class MyApplet extends JFrame { 
private static final int NBUTTONS=12;
private JButton buttons[];
private Container cp;
public MyApplet() 
	{
      String[] labels = { "*","*","*","*","*","*","*","*","*","*","*","*" };
  cp=getContentPane();
  cp.setLayout(new BorderLayout());

  JPanel keypadPanel = new JPanel(); 
  keypadPanel.setLayout(new GridLayout(4,3,1,1)); 
  buttons = new JButton[NBUTTONS]; 
  int k;

  for( k = 0; k < buttons.length; k++) 
  { 
  buttons[k] = new JButton(labels[k]); 
  keypadPanel.add(buttons[k]);
  }

  buttons[0].addActionListener(new ActionListener()
     	 {
        public void actionPerformed( ActionEvent e ) { 
          buttons[0].setBackground(Color.blue);
        
      }});
     
      buttons[1].addActionListener(new ActionListener()
     	 {
        public void actionPerformed( ActionEvent e ) { 
          buttons[1].setBackground(Color.red);
     	 
      }});
     
      buttons[2].addActionListener(new ActionListener()
      {
        public void actionPerformed( ActionEvent e ) { 
       	 buttons[2].setBackground(Color.cyan);
      
      }});
     
      buttons[3].addActionListener(new ActionListener()
     	 {
        public void actionPerformed( ActionEvent e ) { 
        buttons[3].setBackground(Color.red);
      
      }});
     
      buttons[4].addActionListener(new ActionListener()
     	 {
        public void actionPerformed( ActionEvent e ) { 
        buttons[4].setBackground(Color.white);
     	 
      }});
     
      buttons[5].addActionListener(new ActionListener()
     	 {
        public void actionPerformed( ActionEvent e ) { 
        buttons[5].setBackground(Color.yellow);
      
      }});
     
      buttons[6].addActionListener(new ActionListener()
     	 {
        public void actionPerformed( ActionEvent e ) { 
       	 buttons[6].setBackground(Color.yellow);
     
      }});
     
      buttons[7].addActionListener(new ActionListener()
     	 {
        public void actionPerformed( ActionEvent e ) { 
       
        buttons[7].setBackground(Color.blue);
      }});
     
      buttons[8].addActionListener(new ActionListener()
     	 {
        public void actionPerformed( ActionEvent e ) { 
         buttons[8].setBackground(Color.green);
      
      }});
     
      buttons[9].addActionListener(new ActionListener()
     	 {
        public void actionPerformed( ActionEvent e ) { 
       	 buttons[9].setBackground(Color.white);
      
      }});
     
      buttons[10].addActionListener(new ActionListener()
     	 {
        public void actionPerformed( ActionEvent e ) { 
       
     	 buttons[10].setBackground(Color.green);
      }});
     
      buttons[11].addActionListener(new ActionListener()
     	 {
        public void actionPerformed( ActionEvent e ) { 
       	 buttons[11].setBackground(Color.cyan);
      
      }});
     
	cp.add(keypadPanel);
	JPanel inputPanel = new JPanel(new GridLayout(1,3));
	cp.add(inputPanel,"North");
	} // instructor 

public static void main(String args[]) {
	MyApplet f = new MyApplet();
	f.setSize(400, 300); 
	f.setVisible(true);
	f.addWindowListener(new WindowAdapter() 
	{ 
  public void windowClosing(WindowEvent e) {
  System.exit(0);
  }
  });

	}  // main method 

} // End of Program

والمعذره حاولت جعل التجانب لليسار ولم استطع والله يعينكم

تم تعديل هذه المشاركة بواسطة رامي العيساوي في 14 مايو 2004 في 17:03

#5

سوف اطلع عليه ان شاء الله و احاول مساعدتك و لكن اعذرني لضيق الوقت الشديد....

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#6

الاخ: رامي ........ اشكر لك اهتمامك وان شاء الله انك تلقى الحل .........

وما انسى باقي الاعضاء واقول لهم فزعتكم معنا.......................

#7
الله يعين ....... و لا من مجيب !!!!!!!!!!!!!!!!!!!!؟؟؟؟؟؟؟؟؟؟؟؟؟؟...
#8

مرحبا اخي هذا code لل MemoryGame اصعب بكثير من البرنامج تاعك حاول تفهمه وان شاء الله بتحل مشكلتك ومتاسف على التاخير

import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import java.applet.*;

class LittleHelp extends Frame
{
  String[] lables;
  Button[] buttons;
  String first_lable = new String();
  String second_lable = new String();
  int second_card;

  public LittleHelp (String[] hidden_lables, Button[] button_cards)
  {
    lables = hidden_lables;
    buttons = button_cards;
  }

  int randomize()
  {
    Random r1 = new Random();
    int card_number = r1.nextInt() % lables.length;
    if ( card_number < 0 )
        card_number = (card_number)*(-1);
    return (card_number);
  }

  int reverseCard(int card_number, Container container)
  {
    String lable = lables[card_number];
    for (int i=0; i<lables.length; i++)
    {
      if ( i == card_number )
        continue;
      if ( lables.equals(lable) )
      {
        second_card = i;
        first_lable = buttons[card_number].getLabel();
        second_lable = buttons.getLabel();
        buttons[card_number].setLabel(lables[card_number]);
        buttons.setLabel(lables);
        container.add(buttons[card_number]);
        container.add(buttons);
        return (i);
      }
    }
    return (-1);
  }

  void unreverseCard (int card_number, Container container)
  {
    buttons[card_number].setLabel(first_lable);
    buttons[second_card].setLabel(second_lable);
    container.add(buttons[card_number]);
    container.add(buttons[second_card]);
  }
}


class BigHelp extends Frame
{
  int[] check_array;
  int[] array_of_classes;
  int button_of_joker;
  String[] lables;
  String lable_of_joker = new String();
  Button[] buttons;
  LittleHelp[] little_help;

  public BigHelp (String[] hidden_lables, Button[] button_cards, int num_of_cards)
  {
    lables = hidden_lables;
    buttons = button_cards;
    check_array = new int[num_of_cards];
    for (int i=0; i < check_array.length; i++)
      check_array = 0;
    little_help = new LittleHelp[num_of_cards];
    array_of_classes = new int[num_of_cards];
  }

  void reverseAllCards (int num_of_cards, Container container)
  {
    int counter = 0;
    int card_to_reverse;
    int num_of_iteration;
    if ( num_of_cards % 2 == 1 )
      num_of_iteration = num_of_cards/2 + 1;
    else
      num_of_iteration = num_of_cards/2;
    while ( counter < num_of_iteration )
    {
      little_help[counter] = new LittleHelp(lables, buttons);
      while ( true )
      {
        card_to_reverse = little_help[counter].randomize();
        if ( check_array[card_to_reverse] == 0 )
          break;
        continue;
      }
      array_of_classes[counter] = card_to_reverse;
      int second_card = little_help[counter].reverseCard(card_to_reverse,container);
      if ( second_card != -1 )
      {
        check_array[card_to_reverse]++;
        check_array[second_card]++;
      }
      else
      {
        check_array[card_to_reverse]++;
        array_of_classes[counter] = num_of_cards+1;
        lable_of_joker = buttons[card_to_reverse].getLabel();
        button_of_joker = card_to_reverse;
        buttons[card_to_reverse].setLabel("joker");
        container.add(buttons[card_to_reverse]);
      }
      counter++;
    }
  }

  void unreverseAllCards (int num_of_cards, Container container)
  {
    for (int i=0; i<num_of_cards/2 + 1; i++)
    {
      if ( array_of_classes != num_of_cards+1 )
          little_help.unreverseCard(array_of_classes, container);
      else
      {
        buttons[button_of_joker].setLabel(lable_of_joker);
        container.add(buttons[button_of_joker]);
      }
    }
  }
}


class MatchCards extends Frame
{
  int first_card;
  int second_card;
  String label = new String();
  String[] lables;
  Button[] buttons;
  Container big_container;
  boolean match = false;
  boolean joker = false;
  SleepThread my_thread = new SleepThread();


  public MatchCards (String name_of_card, int button_number, Button[] button_cards, Container container, String[] hidden_lables )
  {
    my_thread.start();
    first_card = button_number;
    label = name_of_card;
    buttons = button_cards;
    lables = hidden_lables;
    big_container = container;
    reverseCard (buttons[button_number]);
  }

  void reverseCard (Button button)
  {
    String real_label = button.getLabel();
    button.setLabel(label);
    if ( label.equals("joker") )
      joker = true;
    big_container.add(button);
    my_thread.sleep_func(1);
    button.setLabel(real_label);
    big_container.add(button);
  }

  boolean secondCard (String label_second_card, Container container, int button_number)
  {
    second_card = button_number;
    if ( joker )
    {
      dealWithJoker(label_second_card, container, button_number);
      return (true);
    }
    else
    {
      if ( label.equals(label_second_card) )
        match = true;
      label = label_second_card;
      reverseCard (buttons[button_number]);
      if ( match )
      {
        if ( second_card != first_card )
        {
          buttons[first_card].setLabel("");
          buttons[second_card].setLabel("");
          big_container.add(buttons[first_card]);
          big_container.add(buttons[second_card]);
          Button button = new Button();
          button.setLabel(label);
          container.add(button);
          container.validate();
          lables[first_card] = "";
          lables[second_card] = "";
          return (true);
        }
      }
    }
    return (false);
  }

  String[] returnHiddenLabel()
  {
    return(lables);
  }

  void dealWithJoker (String label, Container container, int button_number)
  {
    int joker_card=0;
    first_card = button_number;
    for (int i=0; i<lables.length; i++)
    {
      if ( i == first_card )
        continue;
      if ( lables.equals(label) )
        second_card = i;
      if ( lables.equals("joker") )
        joker_card = i;
    }
    reverseCard (buttons[first_card]);
    reverseCard (buttons[second_card]);
    buttons[first_card].setLabel("");
    buttons[second_card].setLabel("");
    buttons[joker_card].setLabel("");
    big_container.add(buttons[first_card]);
    big_container.add(buttons[second_card]);
    big_container.add(buttons[joker_card]);
    lables[first_card] = "";
    lables[second_card] = "";
    lables[joker_card] = "";
    Button button = new Button();
    button.setLabel(label);
    container.add(button);
    button = new Button();
    button.setLabel("joker");
    container.add(button);
    container.validate();
    joker = false;
  }
}


class SleepThread extends Thread
{
  void sleep_func (int num_of_seconds )
  {
    try
    {
      sleep((long)num_of_seconds*1000);
    }catch (InterruptedException e){}
  }
}


class Clock extends Frame implements Runnable
{
  Button button = new Button();
  Container container;
  int time = 0;

  public Clock (Button button_clock, Container container_clock)
  {
    button = button_clock;
    container = container_clock;
  }

  public void run()
  {
    for (;;)
    {
      String time_to_display = new String(""+time);
      button.setLabel(time_to_display);
      try
      {
        Thread.sleep((long)1000);
      }catch(InterruptedException e){}
      time++;
      container.add(button);
    }
  }

  int getTime()
  {
    return (time);
  }
}


class LastScreen extends Frame implements ActionListener
{
  public LastScreen(String caption, int time)
  {
    super (caption);
    String message = new String();
    message = "Congratulations you finished the game your time is: "+time+" Click on this message to start a new game";
    Label l = new Label(message);
    Button button = new Button();
    button.setLabel("äëáåã ëì");
    button.addActionListener(this);
    setLayout(new FlowLayout());
    add(l);
    add(button);
    enableEvents (AWTEvent.WINDOW_EVENT_MASK);
    pack();
    setSize(400,400);
    setVisible(true);
  }

  public void processWindowEvent (WindowEvent e)
  {
    if (e.getID() == WindowEvent.WINDOW_CLOSING)
      System.exit(0);
  }

  public void actionPerformed (ActionEvent e)
  {
    if (e.getActionCommand() == "äëáåã ëì")
    {
      dispose();
      MemoryGame open_screen = new MemoryGame();
    }
  }
}


class PrimeryScreen extends Frame implements ActionListener
{
  Panel[] panels = new Panel[3];
  String[] cards_hidden_lables;
  Button[] button_cards;
  int[] check_array;
  int counter_for_unfolded_cards = 0;
  boolean big_help_bool = true;
  boolean give_up_bool = true;
  boolean card_touched = false;
  MatchCards match_cards;
  SleepThread my_thread = new SleepThread();
  Clock my_clock;
  Thread t1;

  public PrimeryScreen(int cards)
  {
    super ("Memory Game - Screen Two");
    my_thread.start();
    cards_hidden_lables = new String[cards];
    setLayout (new BorderLayout());
    for (int i=0; i<3; i++)
      panels = new Panel();
    for (int i=0; i<cards_hidden_lables.length; i++)
      cards_hidden_lables = new String();
    cards_hidden_lables = initRandomNumbers(cards_hidden_lables, cards);
    for (int i=0; i<cards_hidden_lables.length; i++)
      System.out.println(cards_hidden_lables);
    topScreen(panels[0]);
    drawCards (cards, panels[1]);
    check_array = new int[cards];
    for (int i=0; i < check_array.length; i++)
      check_array = 0;
    String message = "this is the place for unfolded cards";
    Label l = new Label(message);
    panels[2].add(l);
    add (BorderLayout.NORTH, panels[0]);
    add (BorderLayout.CENTER, panels[1]);
    add (BorderLayout.SOUTH, panels[2]);
    enableEvents (AWTEvent.WINDOW_EVENT_MASK);
    pack();
    setSize(1050,750);
    setVisible(true);
    t1.start();
  }

  String[] initRandomNumbers (String[] labels, int num_of_cards)
  {
    boolean joker = false;
    int i = 0;
    Random r1 = new Random();
    if ( (num_of_cards % 2) == 1 )
      joker = true;
    if (joker)
      check_array = new int[(labels.length)/2 + 1];
    else
      check_array = new int[(labels.length)/2];
    for (i=0; i < check_array.length; i++)
      check_array = 0;
    i = 0;
    while( i < labels.length )
    {
      int place_in_array = r1.nextInt() % check_array.length;
      if ( place_in_array < 0 )
        place_in_array = (place_in_array)*(-1);
      if ( (place_in_array == check_array.length -1) && (joker) )
      {
        if ( check_array[place_in_array] == 0 )
        {
          check_array[place_in_array]++;
          labels = "joker";
          i++;
          continue;
        }
      }
      else
      {
        if ( check_array[place_in_array] < 2 )
        {
          check_array[place_in_array]++;
          labels = "the number is "+place_in_array;
          i++;
          continue;
        }
      }
    }
    return (labels);
  }

  void topScreen (Container container)
  {
    container.setLayout (new GridLayout (1,4));
    Button[] buttons = new Button[4];
    for (int i=0; i<4; i++)
      buttons = new Button();
    buttons[0].setLabel("Give Up");
    buttons[1].setLabel("Big Help");
    buttons[2].setLabel("Little Help");
    my_clock = new Clock(buttons[3], container);
    t1 = new Thread(my_clock);
    for (int i=0; i<4; i++)
    {
      if ( i != 3 )
        buttons.addActionListener(this);
      container.add(buttons);
    }
  }

  void drawCards (int num_of_cards, Container container)
  {
    int num_of_columns = 7;
    button_cards = new Button[num_of_cards];
    for (int i=0; i<num_of_cards; i++)
      button_cards = new Button();
    if ( (num_of_cards % 5) == 0 )
      num_of_columns = 5;
    else if ( (num_of_cards % 8) == 0 )
      num_of_columns = 8;
    else if ( (num_of_cards == 14) || (num_of_cards == 33) )
      num_of_columns = 7;
    container.setLayout( new GridLayout (0,num_of_columns));
    for (int i=0; i<num_of_cards; i++)
    {
      String lable_of_cards = new String ("this is card no. "+(i+1));
      button_cards.setLabel(lable_of_cards);
      button_cards.addActionListener(this);
      container.add(button_cards);
    }
  }

  public void processWindowEvent (WindowEvent e)
  {
    if (e.getID() == WindowEvent.WINDOW_CLOSING)
    {
      t1.stop();
      System.exit(0);
    }
    if (e.getID() == WindowEvent.WINDOW_ICONIFIED)
      t1.suspend();
    if (e.getID() == WindowEvent.WINDOW_DEICONIFIED)
      t1.resume();
  }

  public void actionPerformed (ActionEvent e)
  {
    if (e.getActionCommand() == "Little Help")
    {
      LittleHelp little_help = new LittleHelp(cards_hidden_lables, button_cards);
      while ( true )
      {
        int card_to_reverse = little_help.randomize();
        /*if ( check_array[card_to_reverse] > 0 )
          continue;*/
        if ( cards_hidden_lables[card_to_reverse].equals(""))
          continue;
        //check_array[card_to_reverse]++;
        little_help.reverseCard(card_to_reverse,panels[1]);
        my_thread.sleep_func(3);
        little_help.unreverseCard(card_to_reverse,panels[1]);
        break;
      }
    }
    else if (e.getActionCommand() == "Big Help")
    {
      if (big_help_bool == true)
      {
        BigHelp big_help = new BigHelp( cards_hidden_lables, button_cards, check_array.length );
        big_help.reverseAllCards( check_array.length, panels[1] );
        my_thread.sleep_func(5);
        big_help.unreverseAllCards( check_array.length, panels[1] );
        big_help_bool = false;
      }
    }
    else if (e.getActionCommand() == "Give Up")
    {
      if ( give_up_bool == true )
      {
        BigHelp big_help = new BigHelp( cards_hidden_lables, button_cards, check_array.length );
        big_help.reverseAllCards( check_array.length, panels[1] );
        t1.stop();
        give_up_bool = false;
      }
      else if ( give_up_bool == false )
      {
        dispose();
        MemoryGame open_screen = new MemoryGame();
      }
    }
    else
    {
      int i;
      String label = e.getActionCommand();
      for (i=0; i<check_array.length; i++)
      {
        String match = "this is card no. "+(i+1);
        if ( label.equals(match) )
        {
          if ( cards_hidden_lables.equals("joker") )
          {
            if ( card_touched )
            {
              if (match_cards.secondCard(cards_hidden_lables, panels[2], i))
              {
                counter_for_unfolded_cards++;
                cards_hidden_lables = match_cards.returnHiddenLabel();
              }
              match_cards = new MatchCards(cards_hidden_lables, i, button_cards, panels[1], cards_hidden_lables);
              break;
            }
            else
            {
              match_cards = new MatchCards(cards_hidden_lables, i, button_cards, panels[1], cards_hidden_lables);
              card_touched = true;
              break;
            }
          }
          else
          {
            if ( card_touched )
            {
              if (match_cards.secondCard(cards_hidden_lables, panels[2], i))
              {
                counter_for_unfolded_cards++;
                cards_hidden_lables = match_cards.returnHiddenLabel();
              }
              match_cards = new MatchCards(cards_hidden_lables, i, button_cards, panels[1], cards_hidden_lables);
              break;
            }
            else
            {
              match_cards = new MatchCards(cards_hidden_lables, i, button_cards, panels[1], cards_hidden_lables);
              card_touched = true;
              break;
            }
          }
        }
      }
      if (counter_for_unfolded_cards == check_array.length/2)
      {
        dispose();
        int time = my_clock.getTime();
        LastScreen last_screen = new LastScreen("Memory Game - Last Screen", time);
      }
    }
  }
}


public class MemoryGame extends Applet implements ActionListener, ItemListener
{
  Panel[] panels = new Panel[3];
  boolean joker = false;
  Choice c = new Choice ();
  int num_of_cards = 14;

  public void init ()
  {
    setLayout (new GridLayout(3,1));
    for (int i=0; i<3; i++)
      panels = new Panel();
    label (panels[0]);
    choices (panels[1]);
    begin (panels[2]);
    for (int i=0; i<3; i++)
      add(panels);
    enableEvents (AWTEvent.WINDOW_EVENT_MASK);
    /*pack();
    setSize(400,400);
    setVisible(true);*/
  }

  void label (Container container)
  {
    Label head = new Label ("this is the job a Nice Game");
    container.add(head);
  }

  void choices (Container container)
  {
    container.setLayout (new BorderLayout());
    updateChoices();
    c.addItemListener(this);
    Panel p1 = new Panel();
    p1.setLayout (new BorderLayout());
    p1.add(BorderLayout.NORTH,new Label("JOKER"));
    Checkbox cb1,cb2;
    CheckboxGroup cbg = new CheckboxGroup();
    cb1 = new Checkbox("no joker", cbg, true);
    cb2 = new Checkbox("with joker", cbg, false);
    cb1.addItemListener(this);
    cb2.addItemListener(this);
    p1.add(BorderLayout.CENTER,cb1);
    p1.add(BorderLayout.SOUTH,cb2);
    container.add(BorderLayout.EAST,p1);
    container.add(BorderLayout.CENTER,c);
  }

  void begin (Container container)
  {
    Button b1 = new Button("start");
    Button b2 = new Button("exit");
    container.add(b1);
    container.add(b2);
    b1.addActionListener(this);
    b2.addActionListener(this);
  }

  void updateChoices ()
  {
    if (joker)
    {
      c.removeAll();
      c.add("3*5");
      c.add("5*5");
      c.add("3*11");
    }
    else
    {
      c.removeAll();
      c.add("2*7");
      c.add("3*8");
      c.add("4*8");
    }
  }

  public void actionPerformed (ActionEvent e)
  {
    if (e.getActionCommand() == "exit")
    {
      stop();
    }
    else
    {
      destroy();
      PrimeryScreen primery_screen = new PrimeryScreen(num_of_cards);
    }
  }

  public void processWindowEvent (WindowEvent e)
  {
    if (e.getID() == WindowEvent.WINDOW_CLOSING)
      System.exit(0);
  }

  public void itemStateChanged (ItemEvent e)
  {
    if (e.getItem() == "with joker")
    {
      joker = true;
      updateChoices();
      num_of_cards = 15;
    }
    else if (e.getItem() == "no joker")
    {
      joker = false;
      updateChoices();
      num_of_cards = 14;
    }
    else if (e.getItem() == "2*7")
      num_of_cards = 14;
    else if (e.getItem() == "3*5")
      num_of_cards = 15;
    else if (e.getItem() == "3*8")
      num_of_cards = 24;
    else if (e.getItem() == "5*5")
      num_of_cards = 25;
    else if (e.getItem() == "4*8")
      num_of_cards = 32;
    else if (e.getItem() == "3*11")
      num_of_cards = 33;
  }

  public static void main(String[] args)
  {
    MemoryGame open_screen = new MemoryGame();
  }

}

واذا عندك اي سؤال على البرنامج انا جاهز

والله الموفق

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

#9

مش انا اللي عملته اعطونا ايا بالجامعه بس فاهمه

الله الموفق

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

#10

مشكور اخوي Student_1981 الف شكر على البرنامج ............

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

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