[mshell] Collegare Disegno Ad Un Comando
#1
Inviato 22 maggio 2009 - 20:19
grazie
(era da un po che non mi facevo vedere...)
#2
Inviato 22 maggio 2009 - 22:03
noki57oo, il 22/05/2009 - 21:19, ha scritto:
grazie
(era da un po che non mi facevo vedere...)
Vai a questo post e preleva ball4.txt caricatelo come ball4.m e vedi se è così che vuoi gestire il rettangolo?
(Nota usa il joystick destra-sinistra per muovere il rettangolo)
Poi cerca di capire come questo semplice esempio gestisce i tasti e fammi sapere se era così che volevi fare.
Ciao........
Messaggio modificato da lento il 23 maggio 2009 - 07:51
#3
Inviato 23 maggio 2009 - 03:14
"Domanda mshell" non e' un titolo significativo!!!
#4
Inviato 23 maggio 2009 - 08:41
lento, il 22/05/2009 - 23:03, ha scritto:
(Nota usa il joystick destra-sinistra per muovere il rettangolo)
Poi cerca di capire come questo semplice esempio gestisce i tasti e fammi sapere se era così che volevi fare.
Ciao........
grazie, adesso provo
Il.Socio, il 23/05/2009 - 04:14, ha scritto:
"Domanda mshell" non e' un titolo significativo!!!
hai ragione, la prossima staro piu attento
#5
Inviato 23 maggio 2009 - 09:19
EDIT:un'altra cosa, perche avendo lasciato solo il rettangolo, dopo un po torna nella posizione iniziale?
EDIT2:come aggiungo le collisioni?
Messaggio modificato da noki57oo il 23 maggio 2009 - 15:42
#6
Inviato 23 maggio 2009 - 11:39
use graph as g,ui
ui.menu("menu",["*****","esci"]);
c=ui.cmd();
while true do
if c="*****" then
x=4;
y=104;
iy=-2;
ix=2;
py=120;
tt=0;
a=160;
g.size(240,320);
g.full(true);
ui.keys(true,false);
g.bg(g.black);
g.clear();
do
x=x+ix; y=y+iy;
if x<0 then ix= -ix; end;
if y<0 or y>225 then iy= -iy; end;
g.pen(g.white);
g.line(5,0,5,320);
g.pen(g.white);
g.line(235,0,235,320);
g.pen(g.white);
g.line(120,0,120,320);
g.pen(g.black); g.brush(g.red);
g.rect(py,a,85,145);
g.show();
tasto=ui.cmd(5);
if x>300 then
if (y> py) and (y<py+20) then
ix= -ix;
else
tasto=48;
end;
end;
g.pen(g.black); g.brush(g.black);
g.rect(py,a,85,145);
if tasto=14 or tasto=15 then tt=tasto; end;
if tasto=-14 or tasto=-15 then tt=0; end;
if tasto=16 or tasto=17 then tt=tasto; end;
if tasto=-16 or tasto=-17 then tt=0; end;
if (tt=14) and (py>1) then py=py -4; end;
if (tt=15) and (py<220) then py=py +4; end;
if (tt=17) then a=a +4; end;
if (tt=16) then a=a -4; end;
until tasto=48;
end;
if c="esci" then break end
end;
Messaggio modificato da noki57oo il 23 maggio 2009 - 15:42
#7
Inviato 23 maggio 2009 - 16:53
noki57oo, il 23/05/2009 - 12:39, ha scritto:
Se ti riferisi al sottoscritto Scusa ma fino al giorno 30 ho poco tempo...
Per l'ultima volta vi imploro di identare ste programmi
Ho notato un tentativo di identazione forse non ti è completamente chiaro il metodo per farlo leggi qui
Per aiutarti ti allego il tuo programma identato
Noki57_i.txt (1,11K)
Numero di downloads: 2 e qui evidenzio con le lettere ì-ù-ò-è-à i blocchi di istruzioni che vanno identati.
use graph as g,ui
ui.menu("menu",["*****","esci"]);
c=ui.cmd();
while true do //<-----while c="*****" do
ì if c="*****" then // <---- non serve
ì ù x=4;
ì ù y=104;
ì ù iy=-2;
ì ù ix=2;
ì ù py=120;
ì ù tt=0;
ì ù a=160;
ì ù
ì ù g.size(240,320);
ì ù g.full(true);
ì ù ui.keys(true,false);
ì ù g.bg(g.black);
ì ù
ì ù g.clear();
ì ù do
ì ù ò x=x+ix; y=y+iy;
ì ù ò if x<0 then ix= -ix; end;
ì ù ò if y<0 or y>225 then iy= -iy; end;
ì ù ò
ì ù ò g.pen(g.white)ì;
ì ù ò g.line(5,0,5,320);
ì ù ò g.pen(g.white);
ì ù ò g.line(235,0,235,320);
ì ù ò g.pen(g.white);
ì ù ò g.line(120,0,120,320);
ì ù ò g.pen(g.black); g.brush(g.red);
ì ù ò g.rect(py,a,85,145);
ì ù ò
ì ù ò g.show();
ì ù ò tasto=ui.cmd(5);
ì ù ò if x>300 then
ì ù ò è if (y> py) and (y<py+20) then
ì ù ò è à ix= -ix;
ì ù ò è else
ì ù ò è à tasto=48; // <--- anche senza premere tasti dopo n cicli si verifica
ì ù ò è end;
ì ù ò end;
ì ù ò g.pen(g.black); g.brush(g.black);
ì ù ò g.rect(py,a,85,145);
ì ù ò if tasto=14 or tasto=15 then tt=tasto; end;
ì ù ò if tasto=-14 or tasto=-15 then tt=0; end;
ì ù ò if tasto=16 or tasto=17 then tt=tasto; end;
ì ù ò if tasto=-16 or tasto=-17 then tt=0; end;
ì ù ò if (tt=14) and (py>1) then py=py -4; end;
ì ù ò if (tt=15) and (py<220) then py=py +4; end;
ì ù ò if (tt=17) then a=a +4; end;
ì ù ò if (tt=16) then a=a -4; end;
ì ù until tasto=48;
ì end;
ì if c="esci" then break end // <---- non serve
end;Come vedi il blocco indicato da (ò) del do.....until tasto=48; continua a ciclare anche se non premi un tasto quindi
continua a incrementare (decrementare) i valori x,y sino a far attivare l'istruzione tasto=48
che genera l'uscita dal blocco (ò) ma non dal blocco (ù) quindi resetta al valore originario le variabili e ripete tutto.
Quello che ti ho passato era una lettura non bloccante della tastiera.
Forse a te serve che il programma si fermi all'istruzione tasto=ui.cmd(5); in attesa della pressione di un tasto.
in tal caso tasto=ui.cmd(-1); oltre a riconsigliarti di leggere la guida di 'masmil1988'
metti anche il comando ui.keys(true,false); in questo modo ui.keys(false,false);
in tal caso anche il controllo dei tasti negativi lo puoi eliminare.
Per caricare un immagine e muoverla a ri leggete la guida di 'masmil1988'.
variabile=g.icon("e:\\Images\\immagine.png"); così la carichi in una variabile
g.pu(x,y,variabile); così la stampi.
Per le immagini chiedi aiuto a '6587gianluca' le sà gestire bene e può darti una mano anche per le trasparenze.
Credimi su quanto riporto possono esserci errori scusa ho dovuto redigere di corsa.
Ciao....
#8
Inviato 23 maggio 2009 - 16:59
Messaggio modificato da Il.Socio il 23 maggio 2009 - 20:09
Motivo della modifica: Evita di usare i bottoni "Quote" o "Reply" se non sai come usarli... Per andare sul sicuro, usa i bottoni "Fast Reply" o "Post Reply" :)
#9
Inviato 23 maggio 2009 - 17:21

Aiuto














Pubblicità