Мазмуну:

Obniz менен графикалык рулетка: 5 кадам
Obniz менен графикалык рулетка: 5 кадам

Video: Obniz менен графикалык рулетка: 5 кадам

Video: Obniz менен графикалык рулетка: 5 кадам
Video: Замена секции алюминиевого радиатора 2024, Ноябрь
Anonim
Image
Image

Мен графикалык рулетка жасадым. Эгер сиз баскычты бассаңыз, рулетка айлана баштайт. Кайра бассаңыз рулетка айланууну токтотот жана сигнал берет!

1 -кадам: Circuit

Rulette сүрөтүн айландыруу
Rulette сүрөтүн айландыруу

Биз зымдуу динамикти жана баскычты гана колдонобуз.

Программада зымдардын пин номерлери жазылган.

button = obniz.wired ("Button", {signal: 6, gnd: 7}); speaker = obniz.wired ("Speaker", {signal: 0, gnd: 1});

2 -кадам: Rulette сүрөтүн айландыруу

HTMLде, сиз "CSS трансформациясын" колдоно аласыз. Мисалы, бул 90 градуска бурулган сүрөттүн коду.

document.getElementById ("рулетка"). style = "өзгөртүү: айландыруу (90дег);";

Акырын айланууну баштоо жана токтотуу үчүн, кадрдын айлануу даражасына вар ылдамдыгын кошуңуз.

ылдамдык = 0 болсун; let deg = 0; функция rotate () {deg += ылдамдык; document.getElementById ("рулетка"). style = "өзгөртүү: айландыруу ("+deg+"deg);";

}

setInterval (айландыруу, 10);

3 -кадам: Бип

Рулеткада эч кандай өзгөрүү жок болгуңуз келеби? Муну менен сиз 440 Гц 10 мс сигнал бере аласыз.

Speaker.play (440); await obniz.wait (10); Speaker.stop ();

Бул рулетканын өзгөрүүсүн кантип билүү керек.

if (Math.floor ((deg + speed) / (360 / 7.0)) - Math.floor (deg / (360 / 7.0))> = 1) {onRouletteChange (); }

Ошентип, бул айлануу жана бип коду.

ылдамдык = 0 болсун; let deg = 0; функция rotate () {// эгерде (Math.floor ((deg + ылдамдыгы) /(360 /7.0))) - Math.floor (deg /(360 /7.0))> = 1) {onRouletteChange (); } deg += ылдамдык; document.getElementById ("рулетка"). style = "өзгөртүү: айландыруу ("+deg+"deg);";

}

setInterval (айлантуу, 10);

async функциясы onRouletteChange () {

if (! баяндамачы) {кайтуу;} баяндамачы.плей (440); await obniz.wait (10); Speaker.stop (); }

4 -кадам: Басылган баскычтан баштаңыз

Баскычтын абалын билүү үчүн var buttonState кошуңуз жана учурдагы баскычтын абалын коюңуз.

button.onchange = function (pressed) {buttonState = pressed; };

Ошондой эле roulette.phase учурдагы абалы үчүн var фазасын кошуңуз, булардын бири коюлган.

const PHASE_WAIT_FOR_START = 0; const PHASE_ROTATE = 1; const PHASE_STOPPING = 2; const PHASE_STOPPED = 3;

Мисалы, фаза PHASE_WAIT_FOR_START болгондо жана кийинки баскычка чыккыңыз келет.

эгер (фаза == PHASE_WAIT_FOR_START) {ылдамдык = 0; эгер (buttonState) {фаза = PHASE_ROTATE; }}

Рулетти ылдамдатуу үчүн var ылдамдыгын өзгөртүңүз.

эгер (фаза == PHASE_ROTATE) {ылдамдык = ылдамдык+0,5; }

Рульеттаны ылдамдатуу үчүн var ылдамдыгын өзгөртүңүз.

:

эгер (фаза == PHASE_STOPPING) {ылдамдык = ылдамдык-0.2; }

Бул рулетканын компоненти. Келгиле!

5 -кадам: Программа

Программа үчүн бул жерге кайрылыңыз

Сунушталууда: