|
Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie
|
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2026 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
| 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/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 ©2026 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.