Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Sprite in VB e movimenti fluidi

Ciao ragazzi,
ho sempre lavorato con VB per applicazioni d'ufficio, diciamo.....adesso, la
sera, mi sto cimentando in un piccolo giochino didattico per far imparare
l'uso della tastiera e la posizione dei tasti. Vi spiego in breve (e non
rubatemi l'idea!!!) :-)
su un form ho messo un landscape in stile western (montagne rocciose sullo
sfondo, in lontananza, cactus, etc.)
1) cowboy trasparenti
dovrei posizionare a questo due cowboy su questo landscape. Ho messo due
picturebox con due immagini differenti e ho il primo problema. I due bmp che
uso come cowboy sono trasparenti, ma quando li metto sul form non lo sono
più: al posto della trasparenza vedo il bianco. Come posso fare?
2) proiettile fluidi
uno dei due cowboy è il cattivo, l'altro è il buono (cioè il giocatore).
Quello cattivo "spara" delle lettere a caso verso il cowboy buono: il
giocatore deve premere il tasto corretto per neutralizzare lo sparo. Altro
piccolo problema. Ogni sparo ha una velocità diversa, giusto per rendere più
difficoltoso il gioco. Adesso come faccio? E' presto detto. Ho messo un
Timer sul form, ad ogni evento Timer incremento il .Left dello sparo (che è
una banalissima label). Più il .Interval del Timer è basso, più il
proiettile va veloce.
Consiglio: adesso incremento il .Left di una certa quantità tale per cui il
proiettile "salta" da un posto all'altro. Io vorrei che sia fluido, ma
vorrei regolarne la velocità......voi come fareste?!?!?
grazie a tutti, good coding!!!
-- 
Alletun
Sorry, ask me if you want to get my e-mail!


Diminuisci l'incremento di spostamento e aumenta la frequenza con cui
incrementi, abbassando il tempo del timer.
Ciao!

 incrementi, abbassando il tempo del timer.
questo l'ho già provato, ma non mi soddisfa molto. tra l'altro, ho trovato
un piccolo bachetto. Mentre il proiettile vola, uno con il mouse può
trascinare la barra del titolo e il timer fa fatica a scandire il tempo. Il
gioco diventa più semplice, perchè quasi viene messo in pausa, uno ha tutto
il tempo che vuole per trovare la lettera sulla tastiera....
mah, son mica tanto convinto, ci sono altre idee?
grazie, good coding!!!


 mah, son mica tanto convinto, ci sono altre idee?
do while proiettile.left < meta.left
    proiettile.left = proiettile.left + x
    sleep(n)
loop
così non usi il timer.
Ciao, SK
--
La pasienzia non è mai troppo (Totò)
<><><>
Esistono 10 tipi di persone: chi conosce il binario e chi no

 loop
Naturalmente con un doevents
: - (    lo dimentico sempre...


 cosě non usi il timer.
Ma cosě non puň accettare input da tastiera :)
Ciao

 Ma così non può accettare input da tastiera :)
mi hai fregato, mi stavo correggendo ma non mi hai dato il tempo :-P
Il problema è che se clicchi sulla barra del titolo del form si ferma tutto.
Ma questa barra, sarà necessaria?


 2) proiettile fluidi
Ti sembrerą stupido, ma prova a rendere invisibile la label quanto la sposti
e renderla visibile appena spostata...
    Ciao
        Allanon
-- 
- SPAMKILLER
 lasciate il NOSPAM nell'indirizzo: 
itlangv...@michele.sytes.net
 e lasciate la parola SPAMKILLER nel corpo dell'email

 Ma questa barra, sarà necessaria?
ho letto anche nell'altro post. Non va bene comunque, perchè aggiungendo un
DoEvents nel loop, rimane sempre il fatto che l'API Sleep mette in pausa
tutto quanto, per cui, come già detto, non solo non ricevo input da
tastiera, ma blocco qualsiasi altra cosa che gira nella mia applicazione....


 nella mia applicazione.... good coding!!!
Perchè non ricevi input da tastiera? Se per far partire il colpo clicchi su
di un pulsante puoi mettere nel keypress di quest'ultimo il controllo del
carattere.
Altrimenti su di un oggetto qualsiasi che ha il focus.
Per le altre cose che ti girano mi trovi d'accordo.
con un option, un command button e una label sul form
Private Sub Command1_Click()
Do While Option1.Left < Label1.Left
    Option1.Left = Option1.Left + 5
    DoEvents
    Sleep (1)
Loop
End Sub
Private Sub Cmmand1_KeyPress(KeyAscii As Integer)
MsgBox KeyAscii
End Sub



Lo sleep(1) non serve a niente, in compenso non hai più il controllo della
temporizzazione :)
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 della temporizzazione :)
ok, ok, ok. Ho capito, mi ritiro sconfitto.
Ahò, ci ho provato.


 2) proiettile fluidi

 2) proiettile fluidi
Effettivamente qua non ci sono tante soluzioni. Ho seguito il consiglio di
Allanon, mi pare, perciò ho usato le Tre Pietre Magiche (una per il corpo,
una per la mente e l'altra per lo spirito) e ho giocherellato con il
.Visible e con un timer più basso. Adesso il risultato è accettabile....
Grazie a tutti!!!! ma adesso, più che un problema, vorrei un consiglio.
Ho già messo un timer sul form per il proiettile. Adesso sul form vorrei
mettere alcuni elementi di contorno (nuvole in cielo, cavalli all'orizzonte
che galoppano, etc.). Questi elementi vorrei farli spostare casualmente
sullo schermo: immaginatevi le nuvole che vengono "soffiate" via dal vento,
oppure i cavalli che appaiono ogni tanto, scorpioni che camminano sulla
sabbia, etc.....
è chiaro che a questo punto ogni elemento ha bisogno di un suo timer, o
sbaglio?
ho postato qualcosa anche lunedì, mi pare, su dotnet.vb, e a quanto pare non
ci sono altri meccanismi per gestire queste situazioni......me lo confermate
o vi viene in mente qualcosa che possa aiutarmi?
grazie, good coding!!!


 2) proiettile fluidi
nessun problema se usi il multitrhead , per ogni proiettile lanci un trhead
separato che va avanti per fatti sui mentre il Form aspetta la pressione del
tasto
3) se cliccano sulla barra del titolo e si dovesse stoppare il tutto basta
che "rilanci" gli spari a inizio livello ^_^
4) ho fatto un sw simile per una sezione elementare, li si imparava
l'informatica e la visuale era in prima persona quindi Zoommavo solamente
delle imagebox
5) Perche' non ne approfitti per usare le DX9 ? (directdraw dovrebbe fare al
caso tuo)
6) Ciao :p
-- 
<Gigio2K>
--- 
www.g2kweb.it
 ---
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/