نشاط حركة المكعبات

Create virtual dice using the MakeCode editor

  • Get started
  • MakeCode
  • Inputs
  • Random
  • Variables
Print lesson
  • الأعمار 8+
  • 30 دقائق
  • MakeCode Editor

مقدمة

يقدم هذا المشروع للطلاب حالة الشرط IF... THEN... ELSE وكيفية التحكم في المصابيح الفردية.

دليل المعلم

افتح افتح teacher resources

نشاط

5 خطوات

الخطوة الأولى

This is a program that allows the user to shake the micro:bit to show a die face. On the MakeCode editor select the input blocks from the block menu and select the “shake” block.


input.onGesture(Gesture.Shake, () => {
  
})
          

بمجرد الوصول إلى مساحة العمل ، يمكن تغيير كتلة "التشغيل" إلى عدد من الإيماءات ، مثل الميل لليسار أو لليمين. بالنسبة لهذا المشروع ، يتم اختيار إيماءة الاهتزاز.

Click the arrow on the shake block to change the gesture

الخطوة الثانية

الآن يتفاعل برنامجك مع إيماءة الإدخال التي نحتاجها لإضافة كيفية الاستجابة. في كتل المتغيرات ، قم بإضافة كتلة "تعيين العنصر إلى".


let item = 0
input.onGesture(Gesture.Shake, () => {
    item = 0
})
          

Rename the variable to something more suitable, such as “Roll”. Click the arrow next to 'item' and select 'Rename variable'; a popup box will allow you to change the variable name.

Click the arrow to rename the variable
Enter a name and click 'ok' to rename a variable

Now that a variable called “Roll” has been created we needed to pick a random number between 1 and 6. From the block menu select the “Math” option and select “pick random 0 to 10”

Drag the random block from the 'math' menu

Drag the “pick random” block onto the workspace and connect it to the “Set variable” block replacing the “0” with “1” and the “10” with “6”. Now the program will pick a random number between 1 and 6 every time the micro:bit is shaken. العدد يتم تخزينها في متغير "الأسماء".


let roll = 0
input.onGesture(Gesture.Shake, function () {
    roll = Math.randomRange(1, 6)
})
          

الخطوة الثالثة

الآن المايكرو:بت يحتاج إلى عرض نتيجة مختلفة بناءً على متغير "roll". هذا هو المعروف باسم الاختيار. وفي هذه الحالة سيتم استخدام IF... ثم... مقطع آخر. لإضافة التحديد إلى المايكرو: بت يمكن العثور عليه في قائمة كتلة تحت خيار المنطق.

Drag the block from the logic section

Add a logic statement of “IF THEN ELSE” and click the "+" button to edit the logic to have multiple conditions.


let roll = 0
input.onGesture(Gesture.Shake, function () {
    roll = Math.randomRange(1, 6)
    if (true) {
      
    } else {
      
    }
})
          

وبما أن هناك 6 خيارات ممكنة ، يجب إضافة عبارات 4 "else if". بما أن هناك أول عبارة "If" متبوعة بـ 4 عبارات "else if" وعبارة "else" الأخيرة ، تغطي 6 خيارات في الإجمالي.


let roll = 0
input.onGesture(Gesture.Shake, function () {
    roll = Math.randomRange(1, 6)
    if (true) {
      
    } else if (false) {
      
    } else if (false) {
      
    } else if (false) {
      
    } else if (false) {
      
    } else {
      
    }
})
          

الخطوة الرابعة

لآن نحن بحاجة إلى إنشاء بيان منطقي لبيان IF يعتمد على السماح بالتحديد. مرة أخرى من خيار "المنطق" في قائمة الحظر ، حدد بلوك (block) "يساوي".

Drag the equals block from the logic menu

بمجرد التحديد ، اسحب بلوك (block) "يساوي" إلى بلوك (block) عبارة "IF".

وللتأكد من أن مايكرو:بت (micro:bit) قاعدة البيانات IF على الرقم العشوائي ، يجب التحقق من القيمة المخزنة في المتغير "Roll". يمكن العثور على متغير "Roll" من خيار المتغير .

Drag the 'roll' variable from the variable menu

The first of the 6 checks to carry out is if the variable “Roll” is equal to 1. Place the “Roll” variable within the “is equal to” (=) block.

الآن يجب تكرار هذه العملية للبيانات الأربعة الأخرى "إذا". عن طريق النقر بزر الماوس الأيمن على بلوك (block) "يساوي" يمكن تكرارها وتعديلها للقيم المختلفة الممكنة.

Right click to duplicate blocks

let roll = 0
input.onGesture(Gesture.Shake, function () {
    roll = Math.randomRange(1, 6)
    if (roll == 1) {
      
    } else if (roll == 2) {
      
    } else if (roll == 3) {
      
    } else if (roll == 4) {
      
    } else if (roll == 5) {
      
    } else {
      
    }
})
          

الخطوة الخامسة

المرحلة الأخيرة من البرنامج هي الآن لعرض نمط مختلف لأوجه مختلفة. من الخيار الأساسي في قائمة ، حدد بلوك (block) عرض الاضاءة (leds) ".

Drag a 'show LEDs' block from the basic tab

اسحب بلوك (block) "إظهار المصابيح" إلى مساحة العمل ثم ضعها تحت أول عبارة "IF". By clicking on the dark blue squares, you can create the die pattern required ('on' LEDs are shown by the white colour). في هذا المثال ، اكتمل نمط 1 أدناه.

The centre LED is on

يمكن تكرار هذا المربع مرة أخرى 5 مرات لوجوه الوجوه الأخرى حتى يتم إكمال جميع الخيارات.يظهر البرنامج النهائي أدناه. احفظ المشروع وقم بالتنزيل إلى مايكرو:بت (micro:bit)


let roll = 0
input.onGesture(Gesture.Shake, function () {
    roll = Math.randomRange(1, 6)
    if (roll == 1) {
        basic.showLeds(`
            . . . . .
            . . . . .
            . . # . .
            . . . . .
            . . . . .
            `)
    } else if (roll == 2) {
        basic.showLeds(`
            . . . . .
            . . . # .
            . . . . .
            . # . . .
            . . . . .
            `)
    } else if (roll == 3) {
        basic.showLeds(`
            # . . . .
            . . . . .
            . . # . .
            . . . . .
            . . . . #
            `)
    } else if (roll == 4) {
        basic.showLeds(`
            . . . . .
            . # . # .
            . . . . .
            . # . # .
            . . . . .
            `)
    } else if (roll == 5) {
        basic.showLeds(`
            . . . . .
            . # . # .
            . . # . .
            . # . # .
            . . . . .
            `)
    } else {
        basic.showLeds(`
            . # . # .
            . . . . .
            . # . # .
            . . . . .
            . # . # .
            `)
    }
})
          

التحدي

حاول إضافة الوظائف التالية:

  • أضف رسمًا متحركًا لوجه الوجوه المتداول.
  • اسمح للمستخدم بتحديد عدد الوجوه المتغيرة أي 6 أو 8 أو 12

المزيد من المعلومات

يستخدم نشاط أمر الإيماءة وشاشة الاضاءة LED ويقدم بيانات IF مرة أخرى ، ولكن يتم تشغيل حلقتين للبرمجة في نفس الوقت.

Selecting this opens external content from our support system, which adheres to their privacy policy.