C#: Ping Pong Programm startet nicht?
Mein Programm ist zwar vollständig, aber beim Start fängt es sich nicht an zu bewegen, sondern bleibt gefreezed.
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 Pong_the_Game
{
public partial class Form1 : Form
{
public int speed_left = 4; // ball speed
public int speed_top = 4;
public int Point = 0;
public Form1()
{
InitializeComponent();
timer1.Enabled = true;
Cursor.Hide();
this.FormBorderStyle = FormBorderStyle.None; // wegmachen der Border
this.TopMost = true; //form im vordergrund
this.Bounds = Screen.PrimaryScreen.Bounds; // Fullscreen
Brett.Top = Playground.Bottom - (Playground.Bottom / 10); // Position vom Brett
}
private void timer1_Tick(object sender, EventArgs e)
{
Brett.Left = Cursor.Position.X - (Brett.Width / 2); // macht das Brett als Cursor
Ball.Left += speed_left; // bewegt den Ball
Ball.Top += speed_top;
if (Ball.Bottom >= Brett.Top && Ball.Bottom <= Brett.Bottom && Ball.Left >= Brett.Left && Ball.Right <= Brett.Right) // Kollision
{
speed_top += 2;
speed_left += 2;
speed_top = -speed_top; // tauscht Beschreibeung
Point += 1;
}
if (Ball.Left <= Playground.Left)
{
speed_left = -speed_left;
}
if (Ball.Right <= Playground.Right)
{
speed_left = -speed_left;
}
if (Ball.Left <= Playground.Top)
{
speed_top = -speed_top;
}
if (Ball.Bottom <= Playground.Bottom)
{
timer1.Enabled = false; // wenn der Ball ins unten raus ist, stoppt das Spiel
}
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape) // Esc drücken für Verlassen
{
this.Close();
}
}
private void pbr_Click(object sender, EventArgs e)
{
}
private void pbb_Click(object sender, EventArgs e)
{
}
}
}
3 Antworten
Ich sehe nirgends den Start des Timers. Ein Timer initialisiert man so:
Timer t1 = new Timer(); // Timer anlegen
t1.Interval = 100; // Intervall festlegen, hier 100 ms
t1.Tick+=new EventHandler(t1_Tick); // Eventhandler ezeugen der beim Timerablauf aufgerufen wird
t1.Start(); // Timer starten
Dann kann man den Code hier rein packen und er wird alle 100ms ausgeführt (hast du, soweit ich das richtig sehe, schon so gemacht):
void t1_Tick(object sender, EventArgs e)
{
// Dein Code
}
Stoppen kannst du den Timer mit
t1.Stop();
Dein Timer wird nicht richtig initialisiert und nicht gestartet, wenn ich das richtig sehe...
Nutzer, der sehr aktiv auf gutefrage ist
Fehlermeldung? Was hast du schon ausprobiert um den Fehler zu finden? Weißt du wo das Problem grob liegt?
PS: Code nicht hier posten; lieber auf pastebin oder so.
Woher ich das weiß:Studium / Ausbildung – Informatikstudium