我目前正在研究c#中的一种列车调度游戏,其中带有火车,轨道,信号等的“地图”存储在.txt文件中,并由PictureBoxes在特定位置可视化。 当我试图建立第一个调试地图(正方形中只有4个轨道)时,我看不到任何轨道(PictureBoxes),尽管我没有任何异常或任何东西。 我在属性 - >资源下添加了轨道(德语:“gleis”),它们的名称逻辑是bgleis(“besetztes gleis”=占用轨道)是带有列车的轨道,然后是轨道的长度在px(此时只有60和100)和“v”或“h”表示垂直或水平轨道
守则(德语中的变量名等,对不起) 第58行及以下是轨道加载的地方。
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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public List<Zug> ZuegeListe = new List<Zug>();
public List<Signal> SignaleListe = new List<Signal>();
public List<Gleis> GleiseListe = new List<Gleis>();
public List<PictureBox> BildBoxenListe = new List<PictureBox>();
public PictureBox BildBox = new PictureBox();
public Form1()
{
InitializeComponent();
}
//the following happens, when the player starts a new game (TODO: browse files for "maps" txt's)
private void neuesSpielStartenToolStripMenuItem_Click(object sender, EventArgs e)
{
string zeiletext;
System.IO.StreamReader map =
new System.IO.StreamReader("C: /Users/Tristan/Desktop/Bahnspiel/kartedebug.txt");
while((zeiletext = map.ReadLine()) != null)
{
//checking, which type of object (track, train, signal...) is now getting loaded
switch (zeiletext)
{
//trains, note that they are not displayed by PicBoxes, for now they are just there
case "Zug":
string lesezeileZug;
int sollIDZug;
int sollLauf;
lesezeileZug = map.ReadLine();
Int32.TryParse(lesezeileZug, out sollIDZug);
lesezeileZug = map.ReadLine();
Int32.TryParse(lesezeileZug, out sollLauf);
ZuegeListe.Add(new Zug(sollIDZug, sollLauf) );
//Debug Output of each
System.Diagnostics.Debug.WriteLine("Zug: " + sollIDZug + " " + sollLauf);
break;
//tracks, here is the problem with the PictureBoxes
case "Gleis":
string lesezeileGleis;
int sollIDGleis;
int sollPositionGleisX;
int sollPositionGleisY;
int sollLaengeGleis;
int sollAusrichtungGleis;
int sollBesetzung;
int sollReisezeit;
int sollVerbindungGle1;
int sollVerbindungGle2;
lesezeileGleis = map.ReadLine();
Int32.TryParse(lesezeileGleis, out sollIDGleis);
lesezeileGleis = map.ReadLine();
Int32.TryParse(lesezeileGleis, out sollPositionGleisX);
lesezeileGleis = map.ReadLine();
Int32.TryParse(lesezeileGleis, out sollPositionGleisY);
lesezeileGleis = map.ReadLine();
Int32.TryParse(lesezeileGleis, out sollLaengeGleis);
lesezeileGleis = map.ReadLine();
Int32.TryParse(lesezeileGleis, out sollAusrichtungGleis);
lesezeileGleis = map.ReadLine();
Int32.TryParse(lesezeileGleis, out sollBesetzung);
lesezeileGleis = map.ReadLine();
Int32.TryParse(lesezeileGleis, out sollReisezeit);
lesezeileGleis = map.ReadLine();
Int32.TryParse(lesezeileGleis, out sollVerbindungGle1);
lesezeileGleis = map.ReadLine();
Int32.TryParse(lesezeileGleis, out sollVerbindungGle2);
//Einzelgleis in Gleisliste speichern
GleiseListe.Add(new Gleis(sollIDGleis, sollPositionGleisX, sollPositionGleisY,
sollLaengeGleis, sollAusrichtungGleis, sollBesetzung, sollReisezeit, sollVerbindungGle1, sollVerbindungGle2));
//BildBoxFeeding: Location
BildBox.Location = new Point(sollPositionGleisX, sollPositionGleisY);
//BildBoxFeeding: Bild Vertical/Horizontal + Occupation + Size
if (sollAusrichtungGleis == 0 && sollBesetzung == 0) //Vertical free
{
switch (sollLaengeGleis)
{
case 60:
BildBox.ImageLocation = "/sprites/gleis60v.png";
BildBox.Size = new Size(5,60);
break;
case 100:
BildBox.ImageLocation = "/sprites/gleis100v.png";
BildBox.Size = new Size(5, 100);
break;
default:
System.Diagnostics.Debug.WriteLine("Fehler: Falsche Laengenangaben bei Gleis vertikal");
break;
}
}
else if (sollAusrichtungGleis == 0 && sollBesetzung != 0) //Vertical occupied
{
switch (sollLaengeGleis)
{
case 60:
BildBox.ImageLocation = "/sprites/bgleis60v.png";
BildBox.Size = new Size(5, 60);
break;
case 100:
BildBox.ImageLocation = "/sprites/bgleis100v.png";
BildBox.Size = new Size(5, 100);
break;
default:
System.Diagnostics.Debug.WriteLine("Fehler: Falsche Laengenangaben bei besetztem Gleis vertikal");
break;
}
}
else if (sollAusrichtungGleis == 1 && sollBesetzung == 0) // Horizontal Free
{
switch (sollLaengeGleis)
{
case 60:
BildBox.ImageLocation = "/sprites/gleis60h.png";
BildBox.Size = new Size(5, 60);
break;
case 100:
BildBox.ImageLocation = "/sprites/gleis100h.png";
BildBox.Size = new Size(5, 100);
break;
default:
System.Diagnostics.Debug.WriteLine("Fehler: Falsche Laengenangaben bei Gleis horizontal");
break;
}
}
else if (sollAusrichtungGleis == 1 && sollBesetzung != 0) // Horizontal occupied
{
switch (sollLaengeGleis)
{
case 60:
BildBox.ImageLocation = "/sprites/bgleis60h.png";
BildBox.Size = new Size(5, 60);
break;
case 100:
BildBox.ImageLocation = "/sprites/bgleis100h.png";
BildBox.Size = new Size(5, 100);
break;
default:
System.Diagnostics.Debug.WriteLine("Fehler: Falsche Laengenangaben bei besetztem Gleis horizontal");
break;
}
}
BildBoxenListe.Add(BildBox);
//Debug Output of each
System.Diagnostics.Debug.WriteLine("Gleis: ID: " + sollIDGleis + ", Besetzung: " + sollBesetzung + ", Reisezeit: " + sollReisezeit + ", Verb.1: " + sollVerbindungGle1 + ", Verb.2: " + sollVerbindungGle2);
break;
case "Signal":
string lesezeileSig;
int sollIDSig;
int sollSignalbild;
int sollPositionSignalX;
int sollPositionSignalY;
int sollAusrichtungSignal;
int sollVerbindungSig1;
int sollVerbindungSig2;
lesezeileSig = map.ReadLine();
Int32.TryParse(lesezeileSig, out sollIDSig);
lesezeileSig = map.ReadLine();
Int32.TryParse(lesezeileSig, out sollPositionSignalX);
lesezeileSig = map.ReadLine();
Int32.TryParse(lesezeileSig, out sollPositionSignalY);
lesezeileSig = map.ReadLine();
Int32.TryParse(lesezeileSig, out sollAusrichtungSignal);
lesezeileSig = map.ReadLine();
Int32.TryParse(lesezeileSig, out sollSignalbild);
lesezeileSig = map.ReadLine();
Int32.TryParse(lesezeileSig, out sollVerbindungSig1);
lesezeileSig = map.ReadLine();
Int32.TryParse(lesezeileSig, out sollVerbindungSig2);
SignaleListe.Add(new Signal(sollIDSig, sollPositionSignalX, sollPositionSignalY, sollAusrichtungSignal, sollSignalbild, sollVerbindungSig1, sollVerbindungSig2));
break;
default:
break;
}
foreach (PictureBox picbox in BildBoxenListe){
picbox.Visible = true;
}
}
map.Close();
}
}
public class Zug
{
private int IDZug;
private int Lauf;
public Zug(int sollIDZug, int sollLauf)
{
this.IDZug = sollIDZug;
this.Lauf = sollLauf;
}
}
public class Gleis
{
public int IDGleis;
public int PositionGleisX;
public int PositionGleisY;
public int LaengeGleis;
public int AusrichtungGleis;
public int BesetzungGleis;
public int ReisezeitGleis;
public int Verbindung1Gleis;
public int Verbindung2Gleis;
public Gleis(int sollIDGleis, int sollPositionGleisX, int sollPositionGleisY, int sollLaengeGleis, int sollAusrichtungGleis, int sollBesetzung, int sollReisezeit, int sollVerbindung1, int sollVerbindung2)
{
this.IDGleis = sollIDGleis;
this.PositionGleisX = sollPositionGleisX;
this.PositionGleisY = sollPositionGleisY;
this.LaengeGleis = sollLaengeGleis;
this.AusrichtungGleis = sollAusrichtungGleis;
this.BesetzungGleis = sollBesetzung;
this.ReisezeitGleis = sollReisezeit;
this.Verbindung1Gleis = sollVerbindung1;
this.Verbindung2Gleis = sollVerbindung2;
}
}
public class Signal
{
//Verbindung1 is the one, the signal is readible of
private int IDSig;
private int PositionSignalX;
private int PositionSignalY;
private int AusrichtungSignal;
private int SigBild;
private int Verbindung1;
private int Verbindung2;
public Signal(int sollIDSig, int sollPositionSignalX, int sollPositionSignalY, int sollAusrichtungSignal, int sollSigBild, int sollVerbindung1, int sollVerbindung2)
{
this.IDSig = sollIDSig;
this.PositionSignalX = sollPositionSignalX;
this.PositionSignalY = sollPositionSignalY;
this.AusrichtungSignal = sollAusrichtungSignal;
this.SigBild = sollSigBild;
this.Verbindung1 = sollVerbindung1;
this.Verbindung2 = sollVerbindung2;
}
}
}
提前多多感谢! 抱歉我的英语不好和/或如果我做了任何noob错误,我现在只学习c#2周