現在、なぜか初心者なのに自分の実力を試したい!!と簡単なSLG(シミュレーションゲーム)を
作っていてがっつり壁にぶち当たってます。
どこかといいますと、クリック時に移動範囲を求めて、マップを表示している
pictureboxをGraphicsを利用して再描画する部分です。
以下のコードを実行しても、更新されません。
public class Char//キャラクターの基本クラス { ~~~~~ 中略 ~~~~~ protected void CharPic(PictureBox pic) { pic.Click += new EventHandler(PicClick); } void PicClick(object sender, EventArgs e)//キャラクタークリック時に移動処理等をする { MapDate[Y, X] = move; Search(Y, X, move);//移動範囲求める関数 Search_of_Move(MapDate);//↑で求めたところに画像を表示する関数 } void Search(int y,int x,int e)//↑→←↓ { MapDate[y, x] = e; if (e == 0) { return; } if (MapDate[y - 1, x] < e) Search(y - 1, x, e - 1); if (MapDate[y, x + 1] < e) Search(y, x + 1, e - 1); if (MapDate[y, x - 1] < e) Search(y, x - 1, e - 1); if (MapDate[y + 1, x] < e) Search(y + 1, x, e - 1); } void Search_of_Move(int[,] map) { int x = 0; int y = 0; int Xs = MapDate.GetLength(1); int Ys = MapDate.GetLength(0); foreach (int m in map)//移動範囲はどこか、ちまちま探していく { if (x != Xs || y != Ys) { if (map[y, x] > 0) { Move move = new Move(x,y);//描画処理 } } if (x != Xs - 1) { x++; } else if (y != Ys - 1) { x = 0; y++; } } } ~~~~~ 中略 ~~~~~ } }
public class Move//描画処理 { public PictureBox pic; private MapManager map = new MapManager(); private Form1 Form1=new Form1(); public Move(int X,int Y) { Bitmap canvas = map.absolute_map;//ここでマップデータを取得 Graphics g = Graphics.FromImage(canvas); Image img = Image.FromFile(@"C:\Users\owner\Documents\課題用\DateImage\move.png"); g.DrawImage(img, X*42, Y*42, img.Width, img.Height); img.Dispose(); g.Dispose(); Form1.Move_click(canvas); } }}
public partial class Form1 : Form { private MapManager map = new MapManager(); private CharDate CharDate; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { pictureBoxMap.Image = map.absolute_map; } private void Timer1_Tick(object sender, EventArgs e) { pictureBoxMap.Refresh(); } ~~~~~ 中略 ~~~~~ public void Move_click(Bitmap can) { pictureBoxMap.Image = can; //クラスmoveで描画したやつ } }
####実行時(なにも表示されず)
###理想。黄色のところに画像を挿入し、再描画したいです。
直接関わりのなさそうなとこは略しました。
必要あれば指摘お願いします。
スーパースパゲッティコードですみません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/08 12:37
2019/03/08 13:40
2019/03/08 14:35
2019/03/09 14:50
2019/03/10 05:33
2019/03/10 13:33
2019/03/10 13:58