FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

二一十の剣~フットサルのフォーメションソフト開発記

どうも、フットサルソフトの開発記録を残すことにしようかなと。


理由は、
・自分の成長を視覚化できるから
・自分自身への戒めになるから
・課題と解決の足跡を残せるから
・他の人の意見を聞けるから


でも、プログラム的なことなので、興味ない人には、まったくつまらないと思うが、まぁ、いいでしょう。基本、放置のブログになってるので、なんもないよりはいいでしょう。

その代わり、完成したら、鬼骨のページに、フォーメーション談議の項目が増えると思うので了承してください。


で、ようやく、簡単なアニメーションができるようになりました。

本当に簡単で、System.Windows.Forms.Timerクラスを利用して、何秒かごとにイベントを起こし、再描画処理を行うようにする方法を見つけただけです。

課題は、
・画面をいちいち全部、再描画しているため、チラつきが激しい。
→背景を画像にしたらどうか試す。

・固定的に、プレイヤー1が斜めにゆっくり動くだけなので、マウスでどのように動くかを設定できるようにする。
→動きの設定の仕組みを考える

・画像がしょぼくて、使ってて楽しくない。
→・画像データを動かせるようにする

といったところ。


まだぜんぜん、意見をいただけるほどのレベルじゃないね。
まぁ、それもそのうち。


ソース:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Drawing;

namespace SFS_PROTO
{
public class SFS_PROTO:Form
{
private int ally_width = 20, ally_height= 20;
private int ally1_x = 300, ally2_x = 300, ally3_x = 150, ally4_x = 150;
private int ally1_y = 130, ally2_y = 170, ally3_y = 100, ally4_y = 200;
private int enemy_width = 20, enemy_height = 20;
private int enemy1_x =350, enemy2_x=350, enemy3_x = 450, enemy4_x = 450;
private int enemy1_y = 130, enemy2_y=160, enemy3_y =100, enemy4_y=200;
private int ball_width=10, ball_height=10;
private int ball_x=310,ball_y=160;

private void PROTO_TICK(object sender, EventArgs e)
{

ally1_x++;
ally1_y++;
Invalidate();

}

// Timerを実行するメソッド
public SFS_PROTO()
{
Timer timer = new Timer();
timer.Interval = 100; // 再描画の間隔 
timer.Tick += new EventHandler(PROTO_TICK);
timer.Start();
}

// 描画クラスOnPaintのオーバーロード
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
//コート(フィールドの背景)の描画
Brush fd = new SolidBrush(Color.Green);
e.Graphics.FillRectangle(fd,20,20,600,300);

//コート(白線)の描画
Pen whLine = new Pen(Color.White);
whLine.Width = 5;
e.Graphics.DrawRectangle(whLine,17,17,600,300); //タッチライン
e.Graphics.DrawLine(whLine,317,17,317,317); //ハーフウェイライン
e.Graphics.DrawEllipse(whLine,282,130,70,70); //センターサークル

//プレイヤー味方の描画
Brush ally = new SolidBrush(Color.Blue);
e.Graphics.FillEllipse(ally, ally1_x, ally1_y, ally_width, ally_height);
e.Graphics.FillEllipse(ally, ally2_x, ally2_y, ally_width, ally_height);
e.Graphics.FillEllipse(ally, ally3_x, ally3_y, ally_width, ally_height);
e.Graphics.FillEllipse(ally, ally4_x, ally4_y, ally_width, ally_height);

//プレイヤー敵の描画
Brush enemy = new SolidBrush(Color.Red);
e.Graphics.FillEllipse(enemy, enemy1_x, enemy1_y, enemy_width, enemy_height);
e.Graphics.FillEllipse(enemy, enemy2_x, enemy2_y, enemy_width, enemy_height);
e.Graphics.FillEllipse(enemy, enemy3_x, enemy3_y, enemy_width, enemy_height);
e.Graphics.FillEllipse(enemy, enemy4_x, enemy4_y, enemy_width, enemy_height);

//ボールの描画
Brush ball = new SolidBrush(Color.Black);
e.Graphics.FillEllipse(ball, ball_x , ball_y, ball_width, ball_height);


}

[STAThread]
static void Main()
{
// SFS_PROTOフォームインスタンスの作成
Form form1 = new SFS_PROTO();
// フォームの座標とサイズの決定
form1.StartPosition = FormStartPosition.Manual;
form1.Location = new Point(100,50);
form1.Size = new Size(800,600);
// フォームの背景色
//form1.BackColor = Color.FromArgb(0xee,0xee,0xee);

SFS_PROTO aa = new SFS_PROTO();

// プログラムの実行
Application.Run(form1);
}
}
}
スポンサーサイト

Trackback

Comment Form

管理者にだけ表示を許可する

Comment

プロフィール

グレゴリオ鬼骨

Author:グレゴリオ鬼骨
大分市で活動しているフットサルチーム「グレゴリオ鬼骨」の公式ブログです。未経験者ばかりですが地元の仲間達とワイワイ楽しくかつ勝利を目指して活動しているフットサルチームです。

最新記事
カテゴリ
最新コメント
月別アーカイブ
リンク
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。