Mündəricat:
- Addım 1: Təchizat/Alətlər
- Addım 2: Sxem və Planlaşdırma
- Addım 3: SQL verilənlər bazası
- Addım 4: Avadanlıq
- Addım 5: Proqram təminatı
Video: Rəqəmsal Şahmat - Şahmat Oyununuzu Onlayn izləyin: 5 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Gəncliyimdən bəri çox şahmat oynayıram və vebdə kompüterlərə və ya canlı rəqiblərə qarşı şahmat oynamaq üçün çox sayda veb sayt olduğu üçün heç vaxt şahmat oyununuzu izləyən bir veb sayt tapmadım. əslində real həyatda oynayır. Beləliklə, bu layihə ilə bunu həyata keçirməyi ümid edirəm!
Ümid edirəm:
- Şahmat fiqurlarının hərəkətini izləyə bilmək
- Keçmiş oyunlar haqqında bəzi lider lövhələrinə baxın.
- Vaxtı izləyin və peşəkar bir oyun kimi sürətli oynayın.
Çox mürəkkəb bir layihədir, çünki tamamlandıqda oxumaq üçün 64 işıq sensoru və 8 çip tələb olunacaq. Hansı ki, artıq böyük bir işdir və digər sensorlardan heç birini saymırıq.
Kollecimiz bizə etməli olduğumuz işlərin böyük bir siyahısını verdi:
- Layihəmiz üçün bir sxem yaradın
- Məlumatların saxlanması və alınması üçün bir verilənlər bazası yaradın.
- Adobe XD istifadə edərək veb sayt hazırlayın
- Bu veb saytı CSS və HTML ilə yenidən yaradın
- Python ilə sensorları oxuyun
- Şüşə istifadə edərək veb saytındakı sensor məlumatlarını göstərin.
Bu təlimatda sizi səyahətimdə istiqamətləndirəcəyəm və son bir neçə həftə ərzində yaşadığım bütün çətinliklər və qurtuluş anları.
Addım 1: Təchizat/Alətlər
Təchizat, material və alətlər uğurlu bir layihə üçün ilk addımdır!
Alətlər:
- Lehimleme dəmir
- Lehimləmə Qalay
- Kəlbətinlər
- Qazma maşını
- Tape
Təchizat:
- Micro SD kartlı Raspberry Pi (4 GB kifayət olmalıdır)
- Rasberry Pi ayaqqabı
- Parça ilə şahmat taxtası
- 7 seqmentli ekran (TM 1637)
- 2 toxunma sensoru (TTP223B)
- Kartlı RFID Oxucu (MFRC522)
- MCP3008 (Nə qədər getmək istədiyinizə bağlı olaraq, hər MCP üçün 8 Şahmat koordinatını oxuya bilərsiniz)
- 5288 tipli İşıqdan Rezistor (hər MCP üçün 8)
- Başlıqlar (Kişidən kişiyə və qadından kişiyə)
Hər şeyi almaq lazımdırsa, təxmini xərc qiyməti göndərmə xərcləri də daxil olmaqla 125 avro ətrafında olmalıdır (Yalnız təchizat üçün)!
İstədiyiniz hər şeyə bağlantılar və qiymətlər əlavə edilmiş bir Excel faylı var!
Addım 2: Sxem və Planlaşdırma
Bu layihədə növbəti addım bir sxem yaratmaqdır. 2 etdim: Biri çörək taxtasında, biri sırf elektronikada. Hər şeyi təmiz saxlamaq və lazımsız əşyaları bağlamadığımızdan əmin olmaq üçün bu sxemlərə ehtiyacımız olacaq!
Kimsə maraqlanırsa bu sxemləri yaratmaq üçün "Fritzing" adlı bir proqramdan istifadə etdim.
Rəng Kodlaması:
- Qırmızı = enerji təchizatı
- Yaşıl = əlaqə
- Mavi = torpaq
Raspberry Pi əlaqələri:
- 3V3 => Çörək lövhəsində hər şeyə güc verən VC xətti
- 5V => 7 seqmentli VCC
-
GND:
- Çörək taxtasında yer
- 7 seqmentli ekranın zəmini
- GPIO4 => Saat MCP3008 pinini seçin
- GPIO10 => MCP3008 -in MOSI pin
- GPIO9 => MCP3008 -in MISO pimi
- GPIO11 => MCP3008 -in CLK pimi
- GPIO7 => MFRC522 SDA pin
- GPIO19 => İlk Touch sensorunun DIG pin
- GPIO26 => İkinci Touch sensorunun DIG pin
- GPIO20 => Yeddi seqmentli ekranın CLK pin
- GPIO21 = yeddi seqmentli ekranın DIO pimi
Sxemlər haqqında bir cüt qeyd edir:
- Bu sxemdə yalnız 1 MCP var, bu o deməkdir ki, yalnız 8 koordinat tam oxunacaq.
- Çip seçimim olaraq GPIO sancaqlarından istifadə edəcəyəm. Potensial olaraq 8 MCP ilə yalnız 2 Çip seçmə pinləri mövcud olduğundan.
- 7 seqmentli ekran müəllim tərəfindən təklif olunanlardan biridir, öz protokolu üzərində işlədiyi üçün cəmi 4 telə ehtiyac var.
- Toxunma sensorlarının rəqəmsal pinindəki rezistorlara tam ehtiyac yoxdur, lakin tövsiyə olunur.
Komponentlərin izahı:
-
İşıq sensoru olan MCP:
-
Bir MCP3008 8 kanallı 10 bit ADC -dir:
- bir MCP3008, işıq sensörlərinin analoq dəyərini oxuyacaq, bu dəyər hazırda sensorda parlayan işıq miqdarına bağlıdır.
- Python kodumda bu analoq dəyəri alacağam və 1 və ya 0 -a çevirəcəyəm
-
- Quraşdırılmış paketi olan xüsusi bir protokol (SPI) istifadə edir.
- Quraşdırılmış bir paket ilə kodlaşdırmaq çətin deyil
- Etiketi oxuyur və etiketin dəyərini qaytarır
- Bir etiketə bir dəyər yaza bilərsiniz, buna görə onaltılı dəyəri qaytarmaq əvəzinə bir ad qaytarır
- Həm də asan kodlaşdırma üçün quraşdırılmış paketdən istifadə edir
- Tam bir dəyərə malik bir dəyişən yaradın, sonra onu 4 xarakterə bölün və həmin simvolları göstərin
Toxunma sensorları:
Eynilə bir düymə kimi işləyir, bunun üçün geri çağırma metodu ilə bir sinif istifadə edirəm. Bu barədə daha sonra
RFID oxucu (MFRC 522):
7 Segment (TM1637)
Addım 3: SQL verilənlər bazası
Bu layihəyə doğru üçüncü addım 3NF normallaşdırılmış SQL verilənlər bazası yaratmaqdır!
Buna ehtiyacımız olacaq:
- Məlumat daxil edilir
- Məlumat əldə etmək və veb saytımızda göstərmək
- Mövcud şahmat oyununda nə qədər döndüyünü görə bilmək!
Cədvəllər izah edildi:
-
Oyunlar
- Bu, müəyyən bir oyunu kimin qazandığını və oyunun nə vaxt oynandığını izləyir
- Burada əsas açar GameID -dir
- Tarix cari tarixin standart dəyərinə malikdir
- Qalib və hesab oyun bitdikdən sonra əlavə olunacaq!
-
Oyunçular (Hollandiyada yazanlar)
- Bunlar əl ilə daxil edilir, lakin RFID kart sistemi ilə də daxil edilə bilər.
- Kartınıza bir ad yazın, sonra kartı oxuyun və adını bu cədvələ daxil edin
- Həm də hər bir oyunçunun veb saytında göstərilməsi üçün qazandığı / itirdiyi rekordu izləyir
-
Tarixçi (Tarix)
- Bu dönüş tarixi
- bir şahmat parçası köçürüldükdə burada yenilənəcək
- 3 xarici açar, oyunçu, oyun və şahmat var
- ReadDate (InleesDatum), sensorun oxunduğu tarixdir
- ReadTime, ReadDate ilə eynidır, lakin zaman damgası ilə
- LocationID (LocatieID), yerləşdiyi koordinatın adıdır. məsələn "a3"
-
Şahmat Fiqurları (Hollandiyada Schaakstukken)
- Hər bir şahmat parçasının şəxsiyyəti, komandası, adı və statusu var
- Komanda ya 1, ya da 2, qara və ya ağ;
- Həmişə yazılan əsərin adı "Piyon 1" olardı
- Status, parçanın diri və ya ölü olduğunu bildirir!
Addım 4: Avadanlıq
İndi bütün düzgün parçaları hazırladıqdan sonra bir şey yaratmağa başlaya bilərik!
Bu hissəni alt addımlara ayıraq, çünki izah etmək daha asan olacaq:
-
Addım 1: Şahmat taxtanızın hər koordinatına ilk şəkildə göstərildiyi kimi bir delik açmaq, həmçinin toxunma sensorlarını, RFID oxuyucusunu və 7 seqmentli ekranı yerləşdirmək istədiyiniz bir delik açmaq istəyirsiniz.
Lövhənin yan tərəfində bir neçə delik açmağı unutmayın, bunlar lövhənin üstündəki müxtəlif komponentlərin telləri üçündür. Çox qazma, bilirəm
- Addım 2: Bir və ya iki sensoru Raspberry Pi -yə bağlamağa çalışın, işlədiyini yoxlayın. Onları əvvəllər 2 -ci addımda (sxemlər) izah edildiyi kimi MCP analoq oxuyucusuna bağlamaq istəyirsiniz.
-
Addım 3: Bu çətin və çox sinir sarsıdıcı ola bilər, çünki tullanan başlıqlar çox yerində qalmadığından hamısını birdən -birə lövhəyə yapışdırmaq istəyə bilərsiniz. Şahmat taxtasında ilişib qaldıqlarından əmin olmalısan, əks halda sensorları uğurla oxuya bilməyəcəksən
İPUCU! Əgər işinizi asanlaşdırsanız, bəzi yapışqanlar sensorları lentə alarkən yerlərində saxlamağa kömək edə bilər, bunu çətin bir şəkildə kəşf etdim
Addım 5: Proqram təminatı
Test edə biləcəyiniz bir cihaz hazırladıqdan sonra bunun üçün bir kod yazmağa çalışaq! Koduma baxmaq istəyirsinizsə, github -a daxil olun.
Əvvəlcə bir neçə paketin qurulmasına ehtiyacımız olacaq, davam etdim və sizin üçün bir siyahı hazırladım:
-
balon
Python kodunuzun işləyəcəyi budur
-
Şüşə priz
Ön və arxa tərəflər arasında ünsiyyət qurmaq
-
əsəbi
İşıq sensorlarını oxumaq üçün faydalıdır, matrislərlə işləyir
-
netfaces
7 seqmentli ekranda öz IP ünvanınızı çap etmək üçün
-
Şüşə-CORS
Çarpaz mənşəli müraciət paylaşımı, paketlərin fərqli sahələrdə paylaşılmasına imkan verir
Bunun yanında bir neçə dərs yazdım və onlardan istifadə etməkdə sərbəstsiniz.
Ön tərəf
Veb sayt kodu github səhifəmdə də mövcuddur!
Ön tərəf üçün Chessboard.js istifadə edəcəyəm. Bu, hərəkət etmək asan olan parçaları olan istifadəsi asan bir şahmat taxtası əlavə edir!
Lövhədə hər şey fərdiləşdirilə bilər, buna görə əylənin! Ən son versiyanı yüklədikdən sonra sənədləri layihənizə sürükləməli və şahmat taxtası göstərmək istədiyiniz səhifəyə bağlamalı olacaqsınız!
Bundan sonra bir lövhə yaratmağa çalışaq, çox da çətin görünmür:
Əvvəlcə html -də:
İkincisi, javascript faylınızda:
board1 = ChessBoard ('board1', 'start');
və orada var, indi bir şahmat taxtası görə bilməlisən! CSS sənədlərində lövhəni düzəltməkdən çekinmeyin!
İndi biz şahmat taxtasında çox çətin olmayan bəzi hərəkətləri görmək istəyirik. Ancaq hərəkət əmrinin arxa tərəfi tərəfindən göndərilməsi üçün onu fərdiləşdirməliyik. Çox təfərrüata girməyəcəyəm, amma belə bir şey etmək istəyirik:
new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); board1.move (komando);
Arxa plan proqramımızdan bir siyahı alırıq və iki koordinatın arasına bir tire qoyuruq, sonra hərəkəti yerinə yetirmək üçün board.move əmrindən istifadə edirik!
Chessboard.js plagininə ehtiyacımızın izahı budur, kodu özünüz görmək üçün github -a daxil olun.
Tövsiyə:
Öz 2048 Oyununuzu W/Java ilə Proqramlaşdırın: 8 Addım
Öz 2048 Oyununuzu W/Java ilə Proqramlaşdırın !: 2048 oyununu sevirəm. Buna görə də öz versiyamı proqramlaşdırmağa qərar verdim. Əsl oyuna çox bənzəyir, amma özüm proqramlaşdırmaq mənə istədiyimi istədiyim şeyi dəyişdirmə azadlığı verir. Tipik 4x4 əvəzinə 5x5 oyun istəsəm, bir
1D Pong Oyununuzu Özünüz Edin: 5 Adım (Şəkillərlə)
Öz 1D Pong Oyununuzu Özünüz Edin: Bu layihə üçün oynamaq üçün həqiqətən əyləncəli olan 1D Pong Oyunu yaratmaq üçün MDF lövhəsini səs siqnalı düymələri, LEDlər və Arduino Nano ilə necə birləşdirdiyimi sizə göstərəcəyəm. Yolda sizə elektron dövrəsinin necə yaradılacağını və nə qədər fərqli olduğunu göstərəcəyəm
Rəqəmsal kaliper necə sökülür və rəqəmsal kaliper necə işləyir: 4 addım
Rəqəmsal kaliper necə söküləcək və rəqəmsal kaliper necə işləyir: Bir çox insan ölçü üçün kaliperdən necə istifadə edəcəyini bilir. Bu dərslik sizə rəqəmsal kaliperin necə yıxılacağını və rəqəmsal kaliperin necə işlədiyini izah edəcək
İlk yarış oyununuzu yaradın: 10 addım
İlk Yarış Oyununuzu Yarat: Əgər bir az Python kodlaşdırması etmisinizsə və Pygame Zero -da ola biləcəyiniz bir oyun yazmaq istəsəniz, bu təlimatda sadə bir yarış oyunu yazacağıq
Öz Tic Tac Toe Oyununuzu Java -da yazın: 6 addım
Java -da Öz Tic Tac Toe Oyununuzu yazın: Əminəm ki, hamınız Tic Tic Toe -un klassik oyunu haqqında biləcəksiniz. İbtidai məktəb illərimdən bəri Tic Tac Toe dostlarımla oynadığım məşhur bir oyun idi. Həmişə oyunun sadəliyi ilə heyran olmuşam. Birinci kursda mənim