Untitled Document
mIRC in Italiano - Script - Forum - Imposta come Home Page - Aggiungi ai Preferiti - Home - Chat
Utenti connessi: - Visitatori oggi: - Visitatori totali: - Pagine viste oggi:


NewsLetter


localmirc
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----

-
----
-
-
-
-
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----

----
Creare un gioco con il mIRC (Ping pong)
Con questo tutorial cercheremo di spiegare come sia possibile creare un gioco attraverso il mIRC Scripting.
Per l'esempio si è deciso di simulare un classico dei primi anni 80, il pingpong.
---CODICE---

; Con questo alias viene creata una nuova finestra chiamata @gioco (se è gia in esecuzione la finestra viene resa attiva)
; i parametri usati nel comando "/window" sono spiegati chiaramente nell'help del mIRC, nel nostro caso servono solamente per dare al giochino
; un aspetto grafico più adeguato alle nostre esigenze, mentre le variabili specificate serviranno per salvare i punti del giocatore (%px.p),
; quelli del computer (%px.pc) e per controllare lo stato del gioco (%g.act); il valore 1 di quest'ultima variabile sta ad indicare che il gioco è attualmente in esecuzione.
; la variabile %nome.p, come facilmente intuibile, serve ad immagazzinare il nome del giocatore.

alias pingpong if (!%g.act) { %nome.p = $?="Inserirsci il tuo nome:" | window -dCp +fd @gioco 0 0 505 410 | %px.p = 0 | %px.pc = 0 | %g.act = 1 | gioco } | else window -a @gioco


; Nell'alias precendente viene invocato un altro alias, chiamato gioco. Tutti i comandi draw che vedete servono solamente a disegnare linee, rettangoli e punti nella nostra finestra.
; Le variabili %player e %pc servono a salvare le posizioni nella finestra delle racchette. Potete notare che i valori di queste variabili sono composte da 4 parametri separati da punti
; In pratica quei quattro numeri indicano il punto X di origine, il punto Y di origine, la larghezza e l'altezza delle racchette (x y w h).
; Il comando e i parametri del "/drawtext" servono solamente a visualizzare il punteggio della partita. Inoltre vengono startati due timer, il primo controllerà il movimento della pallina,
; mentre il secondo il movimento della racchetta del computer.

alias -l gioco {
clear @gioco
if (!%nome.p) %nome.p = Giocatore
%palla.v = 0
%palla.o = 1
%pallax = 20
%pallay = 20
drawrect -f @gioco 1 1 0 0 505 410
drawrect @gioco 12 1 10 10 480 340
drawrect -f @gioco 0 1 245 0 10 360
drawdot @gioco 12 8 %pallax %pallay
drawrect -f @gioco 0 1 20 140 10 80
drawrect -f @gioco 0 1 470 140 10 80
drawtext @gioco 12 Verdana 14 20 370 -PUNTEGGIO- %nome.p $+ : %px.p - Computer: %px.pc
%player = 20.30.140.220
%pc = 470.480.140.220
.timergiocop -cm 0 7 palla
.timergiocomovpc -cm 0 10 mv.pc
}


; Questo alias è invocato dal timer giocop che, come detto, gestisce il movimento della palla. Anche se a prima vista può sembrare complicato, il codice si basa su una teoria semplicissima:
; Le variabili controlleranno se la pallina sta andando su, giu, destra e/o sinistra, e ne verrà modificata la direzione se la palla va in collissione con i margini del campo, per gestire questa collisione
; viene effettuato un continuo controllo sulle variabili x ed y della pallina in base alla posizione del campo di cui terremo presente sempre le coordinate x ed y.
; Il primo controllo viene effettuato sull'ipotesi che la pallina esce fuori dai margini laterali del campo, se si verifica questo evento vuol dire che la racchetta non e' stata in grado di far rimbalzare
; la pallina, quindi il gioco viene fermato, incrementata la variabile del punteggio (a seconda se la pallina esce a destra o a sinistra) e ristartato il gioco dall'inizio.
; per dare l'effetto grafico del movimento della pallina verrà utlizzata una semplice tecnica, ossia colorare di nero il punto precendente della pallina (x,y) e di blu quello nuovo. La stessa tecnica verrà
; utilizzata per il movimento delle racchette.
; L'eccezzione si verifica soltanto quando la pallina passa sopra la rete, in questo caso il colore non sarà il nero ma il bianco.

alias -l palla {
;valore 1 alto e destra - valore 0 basso e sinistra
if ((%pallax <= 0) || (%pallax >= 505)) { drawdot @gioco 1 8 %pallax %pallay | .timergioco* off | inc % $+ $iif(%pallax <= 0,px.pc,px.p) | .timergioco 1 1 gioco | halt }
var %x, %y, %t
if ((%pallax >= 235) && (%pallax <= 265)) drawrect -f @gioco 0 1 245 0 10 360
if (%pallay == 20) { %palla.v = 0 }
if (%pallay == 340) { %palla.v = 1 }
if ((%pallax isnum 20 - $calc($gettok(%player,1,46) + 18)) && (%pallay isnum $gettok(%player,3,46) - $gettok(%player,4,46))) { %palla.o = 1 | tokenize 46 %player | %t = 1 }
if ((%pallax isnum $calc($gettok(%pc,2,46) - 18) - 480) && (%pallay isnum $gettok(%pc,3,46) - $gettok(%pc,4,46))) { %palla.o = 0 | tokenize 46 %pc | %t = 1 }
if (%palla.v == 1) %y = $calc(%pallay - 1)
else %y = $calc(%pallay + 1)
if (%palla.o == 0) %x = $calc(%pallax - 1)
else %x = $calc(%pallax + 1)
drawdot @gioco 1 8 %pallax %pallay
drawdot @gioco 12 8 %x %y
%pallax = %x | %pallay = %y
if (%t) { drawrect -f @gioco 0 1 $1 $3 10 80 }
}


; Questo alias gestisce il movimento della racchetta verso l'alto. L'immagine viene disegnata con lo stesso principio sopra citato.
; La variabile %player mantiene i parametri del posizionamento della racchetta aggiornandosi automaticamente ad ogni termine dello script.

alias -l mv.s {
tokenize 46 %player
if ($3 >= 20) {
drawrect -f @gioco 1 1 $1 $3 10 80
drawrect -f @gioco 0 1 $1 $calc($3 - 1) 10 80
%player = $1 $+ . $+ $2 $+ . $+ $calc($3 - 1) $+ . $+ $calc($3 - 1 + 80)
}
}


; Come il caso precendente, ma la gestione è riferita al movimento verso il basso.

alias -l mv.g {
tokenize 46 %player
if ($3 <= 260) {
drawrect -f @gioco 1 1 $1 $3 10 80
drawrect -f @gioco 0 1 $1 $calc($3 + 1) 10 80
%player = $1 $+ . $+ $2 $+ . $+ $calc($3 + 1) $+ . $+ $calc($3 + 1 + 80)
}
}

; Questo invece gestisce il movimento della racchetta governata dal computer. La racchetta si sposta in base alle coordinate x ed y della pallina
; e come nei casi precedente la variabile %pc mantiene sempre aggiornate le coordinate del posizionamento della racchetta.

alias -l mv.pc {
tokenize 46 %pc
if ($3 isnum 20-260) {
var %y = $calc($3 $iif(%pallay <= $calc($3 + 40),-,+) 1)
if (%y < 20) %y = 20 | elseif (%y > 260) %y = 260
drawrect -f @gioco 1 1 $1 $3 10 80
drawrect -f @gioco 0 1 $1 %y 10 80
%pc = $1 $+ . $+ $2 $+ . $+ %y $+ . $+ $calc(%y + 80)
}
}


; Nel primo caso viene gestita la pressione dei tasti su e giu, che attivano il timer giocomov attribuendogli l'alias mv.s o mv.g in base al tasto premuto.
; Quando invece questi due tasti vengono lasciati (evento keyup) il timer viene fermato.
; In fine quando il gioco viene chiuso (il gioco si chiude dalla switchbar) la variabile %g.act viene cancellata e tutti i timer fermati.

on *:keydown:@gioco:38,40:.timergiocomov off | .timergiocomov -cm 0 10 $iif($keyval == 38,mv.s, mv.g)
on *:keyup:@gioco:38,40:.timergiocomov off
on *:close:@gioco:unset %g.act | .timergioco* off

---FINE CODICE---

Per lanciare il gioco basta scrivere dalla riga di comando /pingpong e con questo credo sia tutto :).

Ping pong con mIRC
Clicca per ingrandire

Guerrjero
www.tuttoirc.it




  Ultime dal forum mIRC Scripting

Vai al forum
Ultimi script e addon inseriti
Diablo III (14624)
Fancazzista Scr... (18764)
Sensuality scri... (7622)
Grand Theft Aut... (5154)
Stealth Script ... (8382)
-SagittarioScri... (18835)
Paradise Script (13753)
Trivia Game 200... (11882)
Ircap Script 8.... (5191)
RawScript 2.0 (8481)


 

 



Cerca nel sito

Le ultime news:



Sondaggio
Cosa vorresti di nuovo?

Risultati | Archivi

Statistiche Download
Database:
283 Files
241 Mb
Scaricati:
2659868 Files
Totale: 5615348Mb

Upload
Hai realizzato uno Script? Una addon? Una tcl? Un articolo? Qualsiasi cosa? Mandacelo ora! Utilizza il form upload per inviarci il tuo materiale e se lo riteniamo idoneo lo vedrai pubblicato nel portale!
[ Upload ]

Chat
Inserisci il tuo nick:



| Contattaci | Pubblicità | Staff |
Il presente materiale è Copyright TuttoIRC.it 2005. Leggi il Disclaimer