Ecco qui il codice...codice:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Text; using System.Drawing; using System.Windows.Forms; namespace TurboSnake { public partial class gamefrm : Form { public gamefrm() { InitializeComponent(); } private Random gen = new Random(); private int punteggio=0,livello=1,bonus=0,vite=3,xmela,ymela,xserp,yserp; private List<Point> ciccio = new List<Point>(); private List<PictureBox> corpo=new List<PictureBox>(); private void gamefrm_Load(object sender, EventArgs e) { serpenteimg.Location = new Point(10, 10); punteggiolbl.Text = Convert.ToString(punteggio); livellolbl.Text = Convert.ToString(livello); vitelbl.Text = Convert.ToString(vite); do { xmela = gen.Next(64 - 1) * 10;//genero posiione iniz. mela ymela = gen.Next(47 - 1) * 10; } while (ymela == serpenteimg.Location.Y && xmela == serpenteimg.Location.X); melaimg.Location = new Point(xmela, ymela); ciccio.Add(new Point(5,5));//aggiunta la testa ciccio.Add(new Point(5,8));//aggiunto corpo ciccio.Add(new Point(5,11));//aggiunto corpo ciccio.Add(new Point(5,14));//aggiunta coda for (int i = 0; i < ciccio.Count; i++) { PictureBox box=new PictureBox();// creo le immagini per il snake iniziali corpo.Add(box); } disegna(); } private bool su = false, giu = false, dx = false, sx = false; private void gamefrm_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Up)//intercetto tasto su { timer2.Enabled = false; timer3.Enabled = false; timer4.Enabled = false; timer1.Interval = 30; timer1.Enabled = true; if (su == false) { timer1.Tick += new EventHandler(timer1_Tick); su = true; } } if (e.KeyCode == Keys.Down)//intercetto tasto giu { timer1.Enabled = false; timer3.Enabled = false; timer4.Enabled = false; timer2.Interval =30; timer2.Enabled = true; if (giu == false) { giu = true; timer2.Tick += new EventHandler(timer2_Tick); } } if (e.KeyCode == Keys.Left)//intercetto tasto sin { timer1.Enabled = false; timer2.Enabled = false; timer4.Enabled = false; timer3.Interval =30; timer3.Enabled = true; if (sx == false) { sx = true; timer3.Tick += new EventHandler(timer3_Tick); } } if (e.KeyCode == Keys.Right)//intercetto tasto destr { timer1.Enabled = false; timer2.Enabled = false; timer3.Enabled = false; timer4.Interval =30; timer4.Enabled = true; if (dx == false) { dx = true; timer4.Tick += new EventHandler(timer4_Tick); } } } private void timer1_Tick(object sender, EventArgs e) { xserp=ciccio[0].X;yserp=ciccio[0].Y; yserp-= 3; ciccio.Insert(0, new Point(xserp, yserp));//movimento ciccio.RemoveAt(ciccio.Count-1); disegna(); mela_mang(); } private void timer2_Tick(object sender, EventArgs e) { xserp=ciccio[0].X;yserp = ciccio[0].Y; yserp += 3; ciccio.Insert(0, new Point(xserp, yserp));//movimento ciccio.RemoveAt(ciccio.Count - 1); disegna(); mela_mang(); } private void timer3_Tick(object sender, EventArgs e) { xserp = ciccio[0].X;yserp= ciccio[0].Y; xserp -= 3; ciccio.Insert(0, new Point(xserp, yserp));//movimento ciccio.RemoveAt(ciccio.Count - 1); disegna(); mela_mang(); } private void timer4_Tick(object sender, EventArgs e) { xserp = ciccio[0].X; yserp=ciccio[0].Y; xserp += 3; ciccio.Insert(0, new Point(xserp, yserp));//movimento ciccio.RemoveAt(ciccio.Count - 1); disegna(); mela_mang(); } private void aggiungi() { PictureBox box = new PictureBox(); corpo.Add(box); } private void disegna()//assegno ogni punto un immagine { for(int i=0;i<ciccio.Count;i++) { corpo[i].Location=ciccio[i]; corpo[i].Size=new Size(20,20); corpo[i].BackColor = Color.LawnGreen; corpo[i].Visible = true; Controls.Add(corpo[i]); corpo[i].BringToFront(); } } private void mela_mang() { if(melaimg.Bounds.IntersectsWith(corpo[0].Bounds))// se mangia mela { punteggio += 5; punteggiolbl.Text = Convert.ToString(punteggio); xmela = gen.Next(10, terrenopnl.Width - 20); ymela = gen.Next(10, terrenopnl.Height - 20); melaimg.Location = new Point(xmela, ymela); Application.DoEvents();// refresh form mela incrementa_serp(); if (punteggio % 20 == 0) livello++; livellolbl.Text = Convert.ToString(livello); } } private void incrementa_serp() { if (su == true) { xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 1# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; yserp += 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 2# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; yserp += 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 3# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; yserp += 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); } if (giu == true) { xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 1# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; yserp -= 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 2# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; yserp -= 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 3# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; yserp -= 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); } if (dx == true) { xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 1# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; xserp += 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 1# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; xserp += 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 1# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; xserp += 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); } if (sx == true) { xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 1# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; xserp -= 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 1# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; xserp -= 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); xserp = ciccio[ciccio.Count - 1].X; yserp = ciccio[ciccio.Count - 1].Y; ciccio.Add(new Point(xserp, yserp));//aggiunga 1# tassello xserp = ciccio[0].X; yserp = ciccio[0].Y; xserp -= 3; ciccio.Add(new Point(xserp, yserp)); ciccio.RemoveAt(ciccio.Count - 1);//spostamento aggiungi(); disegna(); } } private void melaimg_Click(object sender, EventArgs e) { } private void terrenopnl_Paint(object sender, PaintEventArgs e) { } } }