C# zufällig bewegende Objekte

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von »The Gr4ndp4, 4. März 2015 .

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 4. März 2015
    Hallo,

    ich möchte ein Programm machen, was beim Start eine Anzahl von Rechtecken erstellt, die zufällig groß sind, und sich in eine zufällige Richtung bewegen. Und wenn sie sich treffen soll ein Effekt kommen.
    Jedoch habe ich von C# so gut wie keine Erfahrung, nur einge in C/C++.

    Ich bin bis jetzt nur soweit gekommen, das ich eine Form habe, und wenn ich ein Start Button drücke, werden eine Anzahl von Rechtecken erstellt, aber jedoch auch nur in einer bestimmten Richtung. Und ich habe das Gefühl, das ich es falsch angehe.

    Ich will jetz nicht das Ihr mir ein fertiges Programm schreibt, ehr das ihr mir evt sagt wie ich das mache, das sich Rechtecke an zufälliger Postion erscheinen, die eine zufällige Größe haben, und sich in einer zufälligen Geschwindigkeit bewegen.


    Hier mal mein bis jetzt geschriebener Code, ist nicht viel ...

    Code:
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    
    namespace WindowsFormsApplication3
    {
     public partial class Form1 : Form
     {
     public Form1()
     {
     InitializeComponent();
     }
    
     private void Form1_Load(object sender, EventArgs e)
     {
    
     }
    
     private void button1_Click(object sender, EventArgs e)
     {
     start.Visible = false;
    
     Random sizex = new Random();
     Random sizey = new Random();
    
     Random posx = new Random();
     Random posy = new Random();
    
    
     // Rechteck
     for (int i = 1; i <= 15; i++)
     {
     Pen pen = new Pen(Color.White);
     CreateGraphics().DrawRectangle(pen, posx.Next(300), posy.Next(300), sizex.Next(100), sizey.Next(100));
     }
    
    
     }
     }
    }
    
    
    
    
    

    Danke für jede Hilfe
     

  2. Anzeige
  3. #2 5. März 2015
    AW: C# zufällig bewegende Objekte

    Wenn du die Rechtecke mit CreateGraphics() erzeugst hast du keine Möglichkeit diese Objekte irgendwie weiter zu verwenden (= zu bewegen), da das hierdurch erzeugte Grafikobjekt nur temporär exisitert (siehe: Control.CreateGraphics Method (System.Windows.Forms))
    Du musst dir also erstmal eine "Rechteck" Klasse schreibe die die Informationen (Position, Größe, etc.) verwaltet und Zeichnet.
    Dass deine Rechtecke bei jedem WM_PAINT gezeichnet werden kannst du z.B. mit dem Überschreiber des OnPaint() Events (siehe z.B. The accursed PictureBox)
    Ansonsten ist der Ansatz doch nicht schlecht. Ein Random Objet reicht jedoch aus, du benötigst nicht für jede Variable eins.
     
  4. #3 6. März 2015
    AW: C# zufällig bewegende Objekte

    Hey,

    in C-sharp gibt es kleine Klasse, die sich "Random" nennt, damit kannst du ganz einfach Pseudo-Zufallszahlen berechnen lassen.

    Code:
    int Groeße;
    
    Random zufall = new Random(Initialisierungszahl);
    
    Groeße = zufall.Next(Untere Grenze, ausschl. obere Grenze);
    
    Das hast du ja soweit auch gemacht...

    Für die Anlegung der Objekte, würde ich mit einer Liste arbeiten und die dann mit "foreach" bearbeiten.

    Das bedeutet, leg mit einer for-Schleife so viele Pictureboxes an, wie du zufällig berechnet hast. Danach packst du sie alle in eine Liste und initialisierst sie mit foreach.
     

  5. Videos zum Thema
Die Seite wird geladen...
Similar Threads - zufällig bewegende Objekte
  1. [PHP] Daten zufällig erzeugen

    leex , 14. Februar 2013 , im Forum: Webentwicklung
    Antworten:
    6
    Aufrufe:
    1.352
  2. Antworten:
    5
    Aufrufe:
    877
  3. Antworten:
    4
    Aufrufe:
    394
  4. Antworten:
    0
    Aufrufe:
    655
  5. Antworten:
    2
    Aufrufe:
    1.259