Мазмуну:

Санарип шахмат - Онлайн шахмат оюнуңузга көз салыңыз: 5 кадам
Санарип шахмат - Онлайн шахмат оюнуңузга көз салыңыз: 5 кадам

Video: Санарип шахмат - Онлайн шахмат оюнуңузга көз салыңыз: 5 кадам

Video: Санарип шахмат - Онлайн шахмат оюнуңузга көз салыңыз: 5 кадам
Video: Русский язык. Род существительных.Сложные случаи определения рода. Видеоурок 2024, Ноябрь
Anonim
Санарип шахмат - Шахмат оюнуңузду онлайнда көзөмөлдөңүз
Санарип шахмат - Шахмат оюнуңузду онлайнда көзөмөлдөңүз

Мен жаш кезимден бери көп шахмат ойнойм жана вебде компьютерлерге же тирүү оппоненттерге каршы шахмат ойной турган веб -сайттар көп болгондуктан, мен сиздин шахмат оюнуңузду көзөмөлдөгөн вебсайтты эч качан тапкан эмесмин. чынында чыныгы жашоодо ойнойт. Ошентип, бул долбоор менен мен муну ишке ашырам деп үмүттөнөм!

Мен үмүттөнөм:

  • Шахмат фигураларынын кыймылын байкай билүү
  • Өткөн оюндар тууралуу лидер такталарын караңыз.
  • Убакытты көзөмөлдөп, профессионалдык оюн сыяктуу тез ойноңуз.

Бул өтө татаал долбоор, анткени аяктаса 64 жарык сенсорлору жана 8 чиптерди окуу үчүн талап кылынат. Бул чоң милдет жана биз башка сенсорлорду эсептебейбиз.

Менин колледжим бизге кылчу иштерибиздин чоң тизмесин берди:

  1. Биздин долбоордун схемасын түзүңүз
  2. Маалыматтарды сактоо жана алуу үчүн маалымат базасын түзүңүз.
  3. Adobe XDди колдонуп вебсайт жасаңыз
  4. Бул вебсайтты CSS жана HTML менен кайра жаратыңыз
  5. Питон менен сенсорлорду окуңуз
  6. Колбаны колдонуп веб -сайтта сенсор маалыматтарын көрсөтүңүз.

Бул үйрөткүчтө мен сизди саякатымда жетектеп берем, жана бардык кыйынчылыктар менен куткарылуу учурлары ушул акыркы эки жумада өткөн.

1 -кадам: Берилиштер/Куралдар

Берилиштер, материалдар жана шаймандар ийгиликтүү долбоордун биринчи кадамы!

Куралдар:

  • Кандооч
  • Soldering Tin
  • Pense
  • Тешүүчү станок
  • Тасма

Берилиштер:

  • Micro SD карта менен Raspberry Pi (4GB жетиштүү болушу керек)
  • Rasberry Pi T-өтүкчү
  • Шахмат тактасы даана
  • 7 сегменттүү дисплей (TM 1637)
  • 2 сенсорлор (TTP223B)
  • Карталар менен RFID Reader (MFRC522)
  • MCP3008 (Канча аралыкка баргыңыз келгенине жараша, ар бир MCP үчүн 8 шахмат координатын окуй аласыз)
  • Жарыкка көз каранды резистор түрү 5288 (сизде болгон ар бир MCP үчүн 8)
  • Аталыштар (Эркектен Эркекке жана Аялдан Эркекке)

Эгерде сиз баарын сатып алышыңыз керек болсо, болжолдуу наркы жеткирүү чыгымдарын кошкондо 125 евронун тегерегинде болушу керек!

Сизге керектүү нерселердин бардыгына шилтемелер жана баалар тиркелген Excel файлы бар!

2 -кадам: Схема жана пландаштыруу

Схема жана пландаштыруу!
Схема жана пландаштыруу!
Схема жана пландаштыруу!
Схема жана пландаштыруу!

Бул долбоордун кийинки кадамы - схеманы түзүү. Мен 2 жасадым: бирин нан үстүндө, экинчисин таза электрондук. Бизге бул схемалар керек, баары таза болсун жана керексиз нерселерди туташтырбайлы!

Кимдир бирөө кызыкдар болсо, бул схемаларды түзүү үчүн "Fritzing" аттуу программаны колдондум.

Түс коддоо:

  • Кызыл = электр менен камсыздоо
  • Жашыл = байланыш
  • Көк = жер

Raspberry Pi байланыштары:

  • 3V3 => VC сызыгы баардык нерсеге күч келтирет
  • 5V => 7 сегменттин дисплейинин VCC
  • GND:

    • Нан тактасында жер
    • 7 сегменттин дисплейинин негизи
  • GPIO4 => Саатты тандоо MCP3008 пин
  • GPIO10 => MCP3008дин MOSI пини
  • GPIO9 => MCP3008дин MISO пини
  • GPIO11 => MCP3008дин CLK пини
  • GPIO7 => MFRC522 SDA пини
  • GPIO19 => Биринчи Touch сенсорунун DIG пини
  • GPIO26 => Экинчи сенсордун DIG пини
  • GPIO20 => жети сегмент дисплейинин CLK пин
  • GPIO21 = жети сегмент дисплейинин DIO пини

Схема боюнча бир жубайлар белгилешет:

  • Бул схемада 1 гана MCP камтылган, бул 8 координатты гана толук окууга мүмкүн болот дегенди билдирет.
  • Мен GPIO казыктарын Chip Select катары колдоном. Потенциалдуу 8 MCP менен 2 гана чип тандоо казыгы бар болгондуктан.
  • 7 сегменттин дисплейи мугалим тарабынан сунушталган, анын протоколу боюнча иштегендиктен 4 зым гана керек.
  • Сенсордук сенсорлордун санарип пининдеги резисторлорго толук муктаждык жок, бирок сунушталат.

Компоненттерди түшүндүрүү:

  • Жарык сенсорлору менен MCP:

    • An MCP3008 - бул 8 каналдуу 10 бит ADC:

      • MCP3008 жарык сенсорлорунун аналогдук маанисин окуйт, бул маани сенсордо жарыктын көлөмүнө жараша болот.
      • Менин питон кодумда мен аналогдук маанини алам жана аны 1 же 0го айландырам
  • Сенсордук сенсорлор:

    Кнопка сыяктуу иштейт, мен бул үчүн кайра чалуу ыкмасы менен класс колдоном. Бул тууралуу кийинчерээк

    RFID окурман (MFRC 522):

    • Орнотулган пакети бар белгилүү бир протоколду (SPI) колдонот.
    • Орнотулган пакет менен коддоо кыйын эмес
    • Теги окуйт жана тегдин маанисин кайтарат
    • Сиз ошондой эле тегге маани жаза аласыз, андыктан он алтылык маанини кайтаруунун ордуна, мисалы, атын кайтарат

    7 сегмент (TM1637)

    • Ошондой эле оңой коддоо үчүн орнотулган пакетти колдонот
    • Бүтүн сандагы өзгөрмөнү түзүңүз, андан кийин аны 4 белгиге бөлүңүз жана ошол белгилерди көрсөтүңүз

3 -кадам: SQL маалымат базасы

SQL маалымат базасы
SQL маалымат базасы

Бул долбоорго карай үчүнчү кадам - бул 3NF нормалдаштырылган SQL маалымат базасын түзүү!

Бул үчүн бизге керек болот:

  • Дайындарды киргизүү
  • Маалыматтарды алуу жана аны биздин веб -сайтта көрсөтүү
  • Азыркы шахмат оюнунда канча бурулуш болгонун так көрө билүү!

Таблицалар түшүндүрүлөт:

  • Оюндар

    • Бул кайсы бир оюнда ким жеңгенин жана оюн качан ойногонун аныктайт
    • Бул жерде негизги ачкыч GameID болуп саналат
    • Дата учурдагы датанын стандарттык маанисине ээ
    • Жеңүүчү жана упай оюн бүткөндөн кийин кошулат!
  • Оюнчулар (голландиялык спелерлер)

    • Бул кол менен киргизилет, бирок RFID карта тутуму аркылуу да киргизилиши мүмкүн.
    • Картаңызга ат жазыңыз, анан картаны окуп, бул столго атын киргизиңиз
    • Ал ошондой эле веб -сайтта көрсөтүлө турган ар бир оюнчунун утушу / жоготуу рекордун көзөмөлдөйт
  • Тарых (тарых)

    • Бул бурулуш тарыхы
    • шахмат фигурасы жылдырылганда, ал бул жерде жаңыртылат
    • Анда 3 чет элдик баскыч, оюнчу, оюн жана шахмат бар
    • ReadDate (InleesDatum) - бул сенсордун окулган күнү
    • ReadTime ReadDate менен бирдей, бирок убакыт белгиси бар
    • LocationID (LocatieID) - бул жайгашкан координаттын аты. мисалы "а3"
  • Шахмат фигуралары (Голландияда Schaakstukken)

    • Ар бир шахматтын ID, командасы, аты жана статусу бар
    • Команда же 1 же 2, кара же ак;
    • Эч качан чыгарманын аталышы башкача айтканда "Күрөө 1" болмок
    • Статус бөлүк тирүү же өлүк экенин билдирет!

4 -кадам: Аппараттык

Аппараттык
Аппараттык
Аппараттык
Аппараттык
Аппараттык
Аппараттык

Эми бизде бардык туура бөлүктөр бар, биз бир нерсени түзө баштайбыз!

Келгиле, бул бөлүктү суб кадамдарга бөлөлү, анткени түшүндүрүүгө оңой болот:

  • 1 -кадам: Сиз биринчи сүрөттө көрсөтүлгөндөй шахмат тактаңыздын ар бир координатына тешик кылгыңыз келет, ошондой эле сенсордук сенсорлорду, RFID окурманын жана 7 сегменттик дисплейди жайгаштыргыңыз келген тешикти бургуңуз келет.

    Тактайдын капталында кээ бир тешиктерди бурууну унутпаңыз, бул тактайдын үстүндөгү ар кандай компоненттердин зымдары үчүн. Көп бургулоо, мен билем

  • 2 -кадам: Raspberry Piге бир же эки сенсорду өткөрүүгө аракет кылыңыз, алар иштээрин текшериңиз. Сиз аларды 2 -кадамда (схемалар) мурда айтылгандай MCP аналогдук окурманга туташтыргыңыз келет.
  • 3 -кадам: Бул өтө татаал жана нервди талкалоочу болушу мүмкүн, анткени секирүүчү аталыштар такыр эле тыгылып калган жок, сиз алардын бардыгын тактага жаздыргыңыз келиши мүмкүн, же жекече же бир эле учурда. Сиз алардын шахмат тактасына такалып калышына кам көрүшүңүз керек, антпесе сенсорлорду ийгиликтүү окуй албайсыз

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

5 -кадам: Программалык камсыздоо

Программалык камсыздоо
Программалык камсыздоо

Сиз сынап көрө турган аппараттык жабдыктарды жасагандан кийин, келгиле, бул үчүн код жазууга аракет кылалы! Эгерде сиз менин кодумду карагыңыз келсе, анда менин гитубума өтүңүз.

Биринчиден, биз бир нече пакеттерди орнотушубуз керек, мен алдыга чыгып, сиз үчүн тизме түздүм:

  • колба

    Бул сиздин python кодуңузда иштей турган нерсе

  • Flask-socketIO

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

  • numpy

    Жарык сенсорлорун окуу үчүн пайдалуу, матрицалар менен иштейт

  • netifaces

    7 сегменттин дисплейинде өз IP дарегиңизди басып чыгаруу үчүн

  • Flask-CORS

    Кайчылаш келип түшкөн ресурстарды бөлүшүү, пакеттерди ар кандай домендерде бөлүшүүгө мүмкүндүк берет

Анын жанында мен бир нече сабактарды жаздым жана сиз аларды колдоно аласыз.

Front-end

Вебсайттын коду менин github баракчамда дагы бар!

Алдыңкы катарда мен Chessboard.js колдоном. Бул оңой кыймылга келүүчү фигуралары бар шахмат тактасын киргизет!

Тактада бардыгы ыңгайлаштырылган, андыктан көңүл ачыңыз! Акыркы версияны жүктөп алгандан кийин, файлдарды долбооруңузга сүйрөп барып, шахмат тактасын көрсөтүүнү каалаган баракка шилтемелешиңиз керек болот!

Андан кийин, такта түзүүгө аракет кылалы, анча деле оор көрүнбөйт:

Биринчиден, сиздин html:

Экинчиден, сиздин javascript файлыңызда:

board1 = ChessBoard ('board1', 'start');

жана ал жерде сиз азыр шахмат тактасын көрө алышыңыз керек! CSS файлдарындагы тактаны ыңгайлаштыруудан тартынбаңыз!

Эми биз шахмат тактасында анча оор эмес кыймылдарды көргүбүз келет. Бирок биз аны ыңгайлаштырышыбыз керек, ошондуктан жылдыруу буйругу арткы тарабынан жөнөтүлөт. Мен өтө майда -чүйдөсүнө чейин айтпайм, бирок биз мындай нерсени кылгыбыз келет:

new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); board1.move (командо);

Биз арткы программанын тизмесин алабыз жана эки координаттын ортосуна сызыкчаны коебуз, андан кийин жылдыруу үчүн board.move буйругун колдонуңуз!

Бул chessboard.js плагинин бизге эмне керек экенин түшүндүрүп, кодду өзүңүз карап чыгуу үчүн менин гитубума өтүңүз.

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