Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
Różnego rodzaju gry elektroniczne są wciąż bardzo
popularne i w przyszłości zapewne sytuacja ta nie ulegnie
zmianie. Gry losowe wykorzystują przypadkowość różnych zdarzeń -
np. ułożenie kart w potasowanej talii, zatrzymanie się kulki na
odpowiednim polu ruletki, układ oczek na kostce itp. Samodzielne
zaprojektowanie losowej gry logicznej może być bardzo ambitnym
wyzwaniem. Ten rozdział może wam w tym pomóc. |
W tym rozdziale zaprojektujemy sterownik elektronicznej kostki do gry. Na wejściu będziemy podawać w kodzie 8421 liczbę od 0 do 7, a na wyjściu otrzymamy sygnały sterujące 7 diodami LED, tworzącymi oczka kostki. Opisany sterownik może posłużyć jako element gry elektronicznej w kości, ale to już inny temat. Poniżej przedstawiamy definicje sygnałów wejściowych i wyjściowych sterownika:
W poniższej tabeli zestawiliśmy kody wejściowe oraz wynikowe stany kostki. W ostatnim wierszu są podane wyjścia sterownika, które mają stan wysoki dla danego układu kostki.
kod | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
kostka | ||||||||
wyjścia | - | D | BF | BDF | ABFG | ABDFG | ABCEFG | ABCDEFG |
Na kostce nie występuje nigdy układ 7 oczek - wprowadziliśmy go jednak umyślnie wraz z układem zerowym (a nóż się przyda).
Układ sterowania kostką jest transkoderem kodu 8421 na kod oczek kostki. Ułóżmy zatem tabelkę sygnałów wejściowych i wyjściowych:
c | b | a | A | B | C | D | E | F | G |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 |
1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Na podstawie powyższej tabeli tworzymy mapy Karnaugha dla poszczególnych wyjść, sterujących diodami LED w kostce. Funkcje sprowadzamy do postaci NAND i NOT, tam gdzie jest to konieczne.
|
|
|
||||||||||||||||||||||||||||||
|
|
Rozpoczynamy budowę sieci logicznej od sygnałów wejściowych i ich negacji:
Teraz realizujemy kolejne funkcje dla wyjść A...G:
Numerujemy bramki:
Definiujemy sieć połączeń:
Na wejście sieci będą podawane sygnały a,b,c w kodzie 8421. Na wyjściach A ... G powinniśmy otrzymać sygnały zgodne z tabelką:
c | b | a | A | B | C | D | E | F | G |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 |
1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
C++// Symulacja sieci logicznej // transkodera z kodu 8421 na // kod oczek kostki do gry // (C)2020 mgr Jerzy Wałaszek // I LO w Tarnowie #include <iostream> using namespace std; // Funkcje bramek int NOT(int a) { return !a; } int NAND(int a, int b) { return !(a && b); } int main( ) { // Stany wejściowe oraz stany wyjściowe int a,b,c,A,B,C,D,E,F,G; // Stany wyjściowe bramek int YB1,YB2,YB3,YB4,YB5; cout << " c b a | A B C D E F G\n" "-------+---------------" << endl; // W pętli generujemy kody 000...111 for(c = 0; c < 2; c++) for(b = 0; b < 2; b++) for(a = 0; a < 2; a++) { // Symulacja sieci YB1 = NOT(c); YB2 = NOT(b); YB3 = NAND(c,b); YB4 = NAND(YB1,YB2); YB5 = NOT(YB3); A = c; B = YB4; C = YB5; D = a; E = YB5; F = YB4; G = c; // Wyświetlamy wyniki cout << " " << c << " " << b << " " << a << " | " << A << " " << B << " " << C << " " << D << " " << E << " " << F << " " << G << endl; } cout << endl; return 0; } |
Wynik: |
c b a | A B C D E F G -------+--------------- 0 0 0 | 0 0 0 0 0 0 0 0 0 1 | 0 0 0 1 0 0 0 0 1 0 | 0 1 0 0 0 1 0 0 1 1 | 0 1 0 1 0 1 0 1 0 0 | 1 1 0 0 0 1 1 1 0 1 | 1 1 0 1 0 1 1 1 1 0 | 1 1 1 0 1 1 1 1 1 1 | 1 1 1 1 1 1 1 |
Z lewej strony ustawiasz liczbę oczek w kodzie 8421 kliknięciami w kwadratowe przyciski. Kolor czarny oznacza stan 0, kolor czerwony oznacza stan 1. Gdy na przyciskach ustawisz odpowiedni kod, sieć logiczna ustawi układ oczek na kostce.
Symulator |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.