Questo è il prog ke ho fatto fino adesso.
Per il momento il programma visualizza solo il segnale di clock, la scelta di usare il comando putpixel è stata richiesta dal professore, il mio problema è che il ogni istante, cioè per ognuno dei pixel che vengono visualizzanti, premendo il tasto J il segnale di J cambia (tra 0 e 1) e così anche per K.
Nel caso in cui non viene premuto nessun tasto i valori restano gli stessi. Questo deve avvenire senza che il programma si fermi ad aspettare che l'utente digiti J o K... un pò come per snake, quando schiacci un tasto il serpente gira, se no continua.
Assegnando a una variabile il tasto (ch='J') se nn sbaglio chiede comunque il cin che blocca il programma finchè nn viene inserito un valore e viene premuto invio.




// Simulazione Fli Flop JK
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <dos.h>
#include <math.h>

int main(void)
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "c:\\");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
}

// Inizio Programma

int xck, yck, ck; // Variabili Segnale di Clock
int xj, yj, j; // Variabili Segnale J
int xk, yk, k; // Variabili Segnale K
int xq, yq, q; // Variabili Segnale Q
int i, y; // Contatori cicli for
int time; // Variabile Delay

time=20;
xck=20;
yck=70;


for(i=1; i<=10; i++)
{

// Fronte di salita del clock
for(y=1; y<=2; y++)
{
delay(time);
setcolor(12);
line(xck,yck,xck,yck-15);
yck=yck-15;
}

// Stato alto del clock --> Il segnale passa
for(y=1; y<=30; y++)
{
delay(time);
putpixel(xck,yck,12);
xck=xck+1;
}

// Fronte di discesa del clock
for(y=1; y<=2; y++)
{
delay(time);
setcolor(12);
line(xck,yck,xck,yck+15);
yck=yck+15;
}

// Stato basso del clock
for(y=1; y<=30; y++)
{
delay(time);
putpixel(xck,yck,12);
xck=xck+1;
}

}

getch();
closegraph();
return 0;
}