دورات هندسية

 

 

برمجة لعبة xo

النتائج 1 إلى 2 من 2
  1. [1]
    farisislam
    farisislam غير متواجد حالياً

    عضو فعال

    تاريخ التسجيل: Apr 2005
    المشاركات: 74
    Thumbs Up
    Received: 4
    Given: 0

    برمجة لعبة xo

    بسم الله الرحمن الرحيم
    هذا برنامج بسيط أردت المشاركة فيه أرجو أن لاتبخلوا علي بالأسئلة والاقتراحات والانتقادات:
    ما رأيك أن نبدأ ببرمجة لعبة xo لقد وضعت لها رسمة بدائية حتى نتعرف ماذا نريد أن نفعل

    خطوات العمل :
     افتح نافذة gui جديدة وضع فيها تسعة أزرار pushbutton كما في الشكل الرائع السابق
     ادخل على menu editor وقم بصنع قائمة file تحتها new و exit
     سأبدأ الآن بشرحه بخطوات بكيفية التفكير بتبسيط الأمور !!!
    1. نبرمج الزر بحيث إذا ضغطت عليه يعطيني o مثلا فذلك سيكون على الشكل التالي :
    كود:
    set(handles.pushbutton1,'string','o')
    2. الآن نفكر بطريقة تمكننا من معرفة أي لاعب يلعب الآن فنضع متحول في الـopeningFcn وليكن b ونجعله يساوي الواحد فنكتب مايلي:
    كود:
    global b 
    b=1;
    3. الآن في كل زر يجب فحص إن كانت b=1 دلالة على اللاعب الأول أو b=2 دلالة على الثاني وتغيير الدور

    كود:
    if b==1
    set( handles.pushbutton1,'string','o')
        b=2;
    elseif b==2
    set( handles.pushbutton1,'string','x')
        b=1;
    End
    4. نقوم بنسخ هذه البرمجة إلى كل الأزرار وضع في البداية global b ليتعرف كل تابع على قيمة b الأخيرة
    5. نضع في الـopeningFcn
    كود:
    global b
    b=1;
    6. الآن إذا ضغط المستثمر على زر قد ضغط عليه من قبل فيجب أن لاتتغير الحرف الموجود على الزر فالحل هاهنا :

    كود:
    if  isempty(get(handles.pushbutton1,'string'))
         if b==1
    set( handles.pushbutton1,'string','o')
        b=2;
    elseif b==2
    set( handles.pushbutton1,'string','x')
        b=1;
    end
    end
    7. سنبرمج زر new file وعمله أن يقوم بمسح كل ماعلى الأزرار من أحرف وأن يجعل قيمة b=1

    كود:
    global b 
    b=1
    for i=1:9
        v=eval(['handles.pushbutton' num2str(i)])
        set(v,'string','')
    end
    8. الآن بقي أن نحدد الفائز حالة فوزه سنؤجله قليلا سأشرح الآن كيف يتم تلوين زر علما أن الماتلاب 7 لا يمكن تلوين الزر بالطريقة الاعتيادية سيكون البرنامج التالي برنامجا تكتبه بشكل مستقل في mfile
    كود:
    function n=colory(m,b)
    set(m,'units','pixels');
    f=get(m,'position');
    v(:,:,1)=b(1)*ones(f(4)-5,f(3)-5);
    v(:,:,2)=b(2)*ones(f(4)-5,f(3)-5);
    v(:,:,3)=b(3)*ones(f(4)-5,f(3)-5);
    set(m,'cdata',v);
    9. الآن عند استدعائه تكتب مثلا
    كود:
    colory(handles.pushbutton1,[0.4 .5 1]);
    10. برمجة زر exit تكتب في مكان برمجته
    كود:
    delete(handles.figure1)
    برمجة الزر الأول ستكون بشكل نهائي كالتالي :
    كود:
    global b 
    if  isempty(get(handles.pushbutton1,'string'))
         if b==1
    set( handles.pushbutton1,'string','o')
        b=2;
    elseif b==2
    set( handles.pushbutton1,'string','x')
        b=1;
    end
    end 
    for i=1:9
        v=eval(['handles.pushbutton' num2str(i)])
       n{i,1}=get(v,'string')
    end
    if  (strcmp(n{1,1},'o')==1 & strcmp(n{2,1},'o')==1 & strcmp(n{3,1},'o')==1 ) | (strcmp(n{1,1},'x')==1 & strcmp(n{2,1},'x')==1 & strcmp(n{3,1},'x')==1)
           msgbox('you win','mabrook')
    end
       if  (strcmp(n{1,1},'o')==1 & strcmp(n{4,1},'o')==1 & strcmp(n{7,1},'o')==1 ) | (strcmp(n{1,1},'x')==1 & strcmp(n{4,1},'x')==1 & strcmp(n{7,1},'x')==1)
           msgbox('you win','mabrook')
       end
       if  (strcmp(n{1,1},'o')==1 & strcmp(n{5,1},'o')==1 & strcmp(n{9,1},'o')==1 ) | (strcmp(n{1,1},'x')==1 & strcmp(n{5,1},'x')==1 & strcmp(n{9,1},'x')==1)
           msgbox('you win','mabrook')
       end
    end

  2. [2]
    فهد الاماراتى
    فهد الاماراتى غير متواجد حالياً
    عضو


    تاريخ التسجيل: Nov 2007
    المشاركات: 31
    Thumbs Up
    Received: 0
    Given: 0
    مشكووووووووووووووووووووووووووووووووووووووووووووووو وووووووووووووووووووووووووووووووووووووووووووووووووو وووووووووووووووووور

    0 Not allowed!



  
الكلمات الدلالية لهذا الموضوع

عرض سحابة الكلمة الدلالية

RSS RSS 2.0 XML MAP HTML