Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    3

    (visual c#) duplicazione picturebox

    Salve, da qualche giorno sto sviluppando un giochino (il mio primo giochino) nel quale il giocatore controlla una navetta che spara un laser per distruggere gli asteroidi. Ho già fatto la classe asteroide, laser astronave ecc. ,riesco a gestire le collisioni ,quello che mi servirebbe è un metodo che mi "duplica" la picturebox (o meglio ancora la classe asteroide) e sapere se questo metodo mi complicherà la gestione delle collisioni.
    Ps: abbiate pazienza non sono un esperto in programmazione

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non è possibile risponderti senza vedere le parti di codice interessate che hai scritto. Mostrale indicando cosa ti servirebbe fare e cosa hai tentato di fare ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    3
    public partial class Form1 : Form
    {

    astronave nave; public int x; public int y; int a = 0; int Punteggio = 0;
    laser proiettile; public int xm; public int ym;
    asteroide roccia; public int xa, ya;
    Point location_nave, location_proiettile,location_asteroide;
    StreamWriter sw;
    public Form1()
    {
    InitializeComponent();
    nave = new astronave(Astronave);
    proiettile = new laser(Laser);
    roccia = new asteroide(Asteroide);
    timer_collisioni.Enabled = true;


    }

    private void Astronave_Click(object sender, EventArgs e)
    {


    }


    private void Form1_Load(object sender, EventArgs e)
    {
    x = Astronave.Location.X; y = Astronave.Location.Y;
    ya = Asteroide.Location.Y; xa = Asteroide.Location.X;
    }


    private void Form1_KeyDown_1(object sender, KeyEventArgs e)
    {
    timer_asteroide.Enabled = true;
    if(a!=2)
    {
    switch (e.KeyData)
    {
    case Keys.Down:
    {
    y = nave.giù();


    }
    break;
    case Keys.Up:
    {
    y = nave.su();


    } break;
    case Keys.Right:
    {
    x = nave.destra();
    } break;
    case Keys.Left:
    {
    x = nave.sinistra();


    } break;
    case Keys.Space:
    {


    xm = Astronave.Location.X + 32;


    location_proiettile = new Point(xm, ym);


    timer_laser.Enabled = true;
    ym = Astronave.Location.Y; Laser.Visible = true;
    } break;
    }

    location_nave = new Point(x, y);
    Astronave.Location = location_nave;
    }


    }


    private void timer1_Tick(object sender, EventArgs e)
    {




    ym = proiettile.su(ym);

    location_proiettile = new Point(xm, ym);
    Laser.Location = location_proiettile;

    }


    private void timer_asteroide_Tick(object sender, EventArgs e)
    {


    ya = roccia.su(ya);
    location_asteroide = new Point(xa, ya);
    Asteroide.Location = location_asteroide;
    }


    private void timer_collisioni_Tick(object sender, EventArgs e)
    {
    if (Asteroide.Bounds.IntersectsWith(Laser.Bounds))
    {

    timer_asteroide.Enabled = false;
    Asteroide= roccia.esplosione(ref Punteggio);
    label2.Text = Convert.ToString(Punteggio);
    Laser.Visible = false;
    timer_durata_distruzione.Enabled = true;
    }
    if (Asteroide.Bounds.IntersectsWith(Astronave.Bounds) )
    {
    Astronave = nave.esplosione();
    sw = File.AppendText(@"F:\astronave\astronave\Resources \Punteggi\Punteggi.txt");
    textBox1.Text = textBox1.Text +" "+ Convert.ToString(Punteggio);
    sw.WriteLine(textBox1.Text);
    sw.Close();
    timer_collisioni.Enabled = false;
    Asteroide.Visible = false;
    a = 2;
    }
    }



    non sapevo se mettere tutto il programma... spero che vada bene
    Ps: se vuoi posto anche la classe asteroide

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    1) devi usare i tag CODE per il codice nel forum
    2) devi anche spiegare qualcosa del codice e del problema che vuoi risolvere (come ti avevo detto) ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    3
    private void timer_asteroide_Tick(object sender, EventArgs e)
    {
    ya = Asteroide.Location.Y+20;
    xa = Asteroide.Location.X;
    location_asteroide = new Point(xa, ya);
    Asteroide.Location = location_asteroide;
    }

    in poche parole io ho una picturebox chiamata Asteroide che si muove verso il basso ogni tot secondi e quando premo la space-bar faccio partire la picturebox Laser che si muove in alto
    private void timer1_Tick(object sender, EventArgs e)
    {

    ym = Laser.Location.Y-30;

    location_proiettile = new Point(xm, ym);
    Laser.Location = location_proiettile;

    }
    ho fatto un metodo che rileva le collisioni e cambia l'immagine della picturebox Asteroide
    private void timer_collisioni_Tick(object sender, EventArgs e)
    {
    if (Asteroide.Bounds.IntersectsWith(Laser.Bounds))
    {

    timer_asteroide.Enabled = false;
    Asteroide.Image = Image.FromFile(@"F:\astronave\astronave\Resources\ esplosioneasteroide.jpg");
    Laser.Visible = false;
    }

    Quello che voglio sapere è se esiste un metodo per creare più asteroidi e se mi creerebbe difficoltà nel gestire le collisioni.
    Mi dispiace di aver infranto un paio di regole ma sono nuovo a questi forum e sto ancora cercando di capire come funzionano
    Ultima modifica di Spiffy; 21-09-2014 a 12:19

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.