Avatar billede nwn Nybegynder
24. november 2007 - 21:57 Der er 3 kommentarer og
1 løsning

Flytte billede ved at holde knap nede og ramme andre billeder

Hej

Jeg er rimelig ny indenfor C#. Som mit første "rigtige" projekt kunne jeg godt tænke mig at lave et simpelt spil (ved godt C++ er mere beregnet til sådan noget)

Jeg indsætter f.eks 5 picturebox'es hvor der er et forskelligt billede i hver.

Man skal så så kunne flytte pictureBox1 (billedet) ved at bruge pilene på tastaturet: op, ned, højre og venstre. Hvis man så rammer ind i pictureBox 2,3 eller 4 så kommer der en alert "Du ramte det forkerte billede" og det skal gentage sig, så lige meget hvor mange gange man rammer ind i dem.

Hvis man så istedet rammer ind i pictureBox5 så skal den alert "Du ramte det rigtige billede"

Håber nogle vil hjælpe mig, havde ikke mere end 75 point tilbage
Avatar billede mr-kill Nybegynder
24. november 2007 - 22:39 #1
Hvis du vil lave meget simple spil i C# så kan du bruge GDI+, ved at lytte på det event der kommer når din Form tegnes. Det gøres ved at lave event på "Paint". På den måde kan du tegne ting direkte på formen (både billeder og cirkler osv.). På den måde slipper du for picturebox.

Hvis du vil lave rigtige spil i C# så skal du klart kigge på xna frameworket: msdn.microsoft.com/xna/. Med xna kan du lave flotte 2d og 3d spil og det er meget let. XNA bygger på DirectX, så det skal også bruges.

Hvis du bruger messenger og får brug for lidt hjælp så kan du lige skrive tilbage, så smider jeg min mail ;)

Hvis du vil gøre det på din måde så har jeg lavet dette du kan kigge på:

---Form1.cs---

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        int speed = 5;
        Point lastPoint;

        void checkAll()
        {
            if (pictureBox1.Bounds.IntersectsWith(pictureBox2.Bounds))
            {
                MessageBox.Show("Du ramte ind i billede 2");
                pictureBox1.Location = lastPoint;
            }
            if (pictureBox1.Bounds.IntersectsWith(pictureBox3.Bounds))
            {
                MessageBox.Show("Du ramte ind i billede 3");
                pictureBox1.Location = lastPoint;
            }
            if (pictureBox1.Bounds.IntersectsWith(pictureBox4.Bounds))
            {
                MessageBox.Show("Du ramte ind i billede 4");
                pictureBox1.Location = lastPoint;
            }
            if (pictureBox1.Bounds.IntersectsWith(pictureBox5.Bounds))
            {
                MessageBox.Show("Du vinder!");
            }
        }
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            lastPoint = pictureBox1.Location;
            Point newPoint = pictureBox1.Location;

            if (e.KeyCode == Keys.Up)
                newPoint.Y -= speed;
            else if (e.KeyCode == Keys.Down)
                newPoint.Y += speed;
            else if (e.KeyCode == Keys.Left)
                newPoint.X -= speed;
            else if (e.KeyCode == Keys.Right)
                newPoint.X += speed;

            pictureBox1.Location = newPoint;
        }

        private void pictureBox1_Move(object sender, EventArgs e)
        {
            checkAll();
        }
    }
}

---Form1.Designer.cs---
namespace WindowsFormsApplication1
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.pictureBox1 = new System.Windows.Forms.PictureBox();
            this.pictureBox2 = new System.Windows.Forms.PictureBox();
            this.pictureBox3 = new System.Windows.Forms.PictureBox();
            this.pictureBox4 = new System.Windows.Forms.PictureBox();
            this.pictureBox5 = new System.Windows.Forms.PictureBox();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).BeginInit();
            this.SuspendLayout();
            //
            // pictureBox1
            //
            this.pictureBox1.BackColor = System.Drawing.Color.Black;
            this.pictureBox1.Location = new System.Drawing.Point(12, 12);
            this.pictureBox1.Name = "pictureBox1";
            this.pictureBox1.Size = new System.Drawing.Size(100, 100);
            this.pictureBox1.TabIndex = 0;
            this.pictureBox1.TabStop = false;
            this.pictureBox1.Move += new System.EventHandler(this.pictureBox1_Move);
            //
            // pictureBox2
            //
            this.pictureBox2.BackColor = System.Drawing.Color.Red;
            this.pictureBox2.Location = new System.Drawing.Point(231, 48);
            this.pictureBox2.Name = "pictureBox2";
            this.pictureBox2.Size = new System.Drawing.Size(100, 100);
            this.pictureBox2.TabIndex = 0;
            this.pictureBox2.TabStop = false;
            //
            // pictureBox3
            //
            this.pictureBox3.BackColor = System.Drawing.Color.Red;
            this.pictureBox3.Location = new System.Drawing.Point(71, 304);
            this.pictureBox3.Name = "pictureBox3";
            this.pictureBox3.Size = new System.Drawing.Size(100, 100);
            this.pictureBox3.TabIndex = 0;
            this.pictureBox3.TabStop = false;
            //
            // pictureBox4
            //
            this.pictureBox4.BackColor = System.Drawing.Color.Red;
            this.pictureBox4.Location = new System.Drawing.Point(343, 323);
            this.pictureBox4.Name = "pictureBox4";
            this.pictureBox4.Size = new System.Drawing.Size(100, 100);
            this.pictureBox4.TabIndex = 0;
            this.pictureBox4.TabStop = false;
            //
            // pictureBox5
            //
            this.pictureBox5.BackColor = System.Drawing.Color.Blue;
            this.pictureBox5.Location = new System.Drawing.Point(597, 181);
            this.pictureBox5.Name = "pictureBox5";
            this.pictureBox5.Size = new System.Drawing.Size(100, 100);
            this.pictureBox5.TabIndex = 0;
            this.pictureBox5.TabStop = false;
            //
            // Form1
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(769, 480);
            this.Controls.Add(this.pictureBox5);
            this.Controls.Add(this.pictureBox4);
            this.Controls.Add(this.pictureBox3);
            this.Controls.Add(this.pictureBox2);
            this.Controls.Add(this.pictureBox1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit();
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.PictureBox pictureBox1;
        private System.Windows.Forms.PictureBox pictureBox2;
        private System.Windows.Forms.PictureBox pictureBox3;
        private System.Windows.Forms.PictureBox pictureBox4;
        private System.Windows.Forms.PictureBox pictureBox5;
    }
}
Avatar billede nwn Nybegynder
24. november 2007 - 23:27 #2
Det jeg bad om virker perfekt :D

Jeg vil lige læse om det der XNA og GDI+

Tusind tak for hjælpen!

Læg et svar og pointene er dine (:
Avatar billede nwn Nybegynder
25. november 2007 - 14:25 #3
Du må forresten gerne smide din msn, da jeg henadvejen får brug for lidt mere hjælp (;
Avatar billede mr-kill Nybegynder
25. november 2007 - 16:21 #4
renebach [a] hotmail.com

^^Skal nok prøve at hjælpe så godt jeg kan ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester