この質問 ( C# WinForm プロジェクトでピクセルを移動する軌跡を表示) の後、C#での私の個人的なアリ コロニー プロジェクトのソリューションを適用しようとしています。表面。
[...]Application.Run(new ShowAnts());[...]
public partial class ShowAnts : Form
{
Bitmap bmp;
int j = 0;
public ShowAnts()
{
InitializeAntProgram();
InitializeComponent();
bmp = new Bitmap(pictureBox1.ClientSize.Width, pictureBox1.ClientSize.Height);
pictureBox1.Image = bmp;
}
public void RenderAnts(object sender, PaintEventArgs e)
{
using (Graphics G = Graphics.FromImage(pictureBox1.Image))
{
while (j < 1000)
{
Map.EvaporatesPheromones();
foreach (Vector2D food in foodSrcs)
{
Map.SetMapPoint(food, 500);
}
foreach (Ant a in ants)
{
Brush c;
c = Brushes.DarkBlue;
if (a.role == AntRole.Scout)
{
a.Move(j);
c = Brushes.Red;
}
e.Graphics.FillRectangle(Brushes.DarkBlue, a.position.x, a.position.y, 1, 1);
G.FillRectangle(Brushes.Gray, a.position.x, a.position.y, 1, 1);
}
j++;
}
}
}
}
上記のコードは、アリの動きを winform に描画するグラフィックの試みを示しています。完全に機能しますが、最終結果のみが表示されます。マップ情報を再解析せずに、グラフィカルなトレイル情報を維持しながら、段階的な進化を示したいと思います。
この「グラフィック インターフェース」を開発しているコンソール プロジェクトが既に存在することを考慮してください。
- 一部の変数は、プロジェクトの別の場所 (例: 食品) に設定されています。
- 「a.Move(j);」は、ant ロジック自体を参照します (マップ配列を参照する分析、決定、新しいセルの移動)。
- `j` カウンターは、歩数を数えたり、任意のストップを設定したりするために使用されますが、実際の用途はありません。
- 私はすでにフェロモン、動き、位置などに関するすべての情報をマップ配列と他のいくつかの変数に保存しています.