畠山くんのdelphi教室

このエントリーをはてなブックマークに追加
1畠山 幸助
僕、畠山幸助にdelphiの簡単なプログラミングを教えるスレです。
まずはテキストエディターなどからよろしくお願いします。

あ、ほんとに初心者なのでやさしくしてくださいね♪
ゆくゆくはファイル操作などまでできるようになりたいです。
Abort;
3デフォルト名無しさん:02/10/03 19:27


モナーの *やさしい* Delphi質問スレ Ver.8
http://pc3.2ch.net/test/read.cgi/tech/1027873869/l50

真・スレッドナビゲーター。。。( ̄ー ̄)ニヤリッ

バグ技?
モナーの *やさしい* Delphi質問スレ Ver.8
http://pc3.2ch.net/test/read.cgi/tech/1027873869/l50
珍・スレッドナビゲーター。。。( ̄ー ̄)ニヤリッ
8畑山浩介:02/10/03 21:57
いやいやいや、違うんですよ。
今週は●●をやってみよう。まずは〜
とかいって僕に教えていくんですよ。
質問スレとかじゃだめなんですって。
やだなぁ。勘違いしちゃ。
いくら出すの?
スレッド

 固定ハンドルが題名に入っている・固定ハンドルが占用している・閉鎖的な使用法を目的としている・等は、自己紹介板・最悪板・夢・独り言板・おいらロビー・なんでもあり板以外では、原則として全て削除または移動対象にします。

11畑山浩介 :02/10/03 23:23
損なことは聞いてません。
12畠山 幸助:02/10/03 23:24
まんこ!まんこ!!まんこ!!!
>まずはテキストエディターなどからよろしくお願いします。
マイクソからメモ帳ソースダウソロードできるよ
削除依頼完了
15デフォルトの名無しさん:02/10/04 04:50
12 :畠山 幸助 :02/10/03 23:24
まんこ!まんこ!!まんこ!!!
16畠山 幸助:02/10/26 18:18
テキストエディターなどから。

し ね し ね し ね し ね し ね し ねし ね し ね し ね しね 
し ね し ね し ね し ね し ね し ねし ね し ね し ね しね し ね し ね し ね し ね し ね し ねし ね し ね し ね しね し ね し ね し ね し ね し ね し ねし ね し ね し ね しね 
し ね し ね し ね し ね し ね し ねし ね し ね し ね しね 
し ね し ね し ね し ね し ね し ねし ね し ね し ね しね 
し ね し ね し ね し ね し ね し ねし ね し ね し ね しね 
し ね し ね し ね し ね し ね し ねし ね し ね し ね しね し ね し ね し ね し ね し ね し ねし ね し ね し ね しね 
マジで氏んで欲しいと思った。
19畠山 幸助:02/10/26 22:42
僕のスレで好きにして何が悪いんですか。
まともなアドバイスもできないくせに。
スレは誰のものでもありません。
2ちゃんねるは何でもありです。スレを個人のものにするのも自由です。
>>1
自分で自分のことを君付けで呼ぶんですか?
キモイ
23デフォルトの名無しさん:02/10/26 23:00
荒らすのも自由です。匿名ですのでばれません。ストレス解消に利用しましょう。
荒らすのもストレス解消に利用するのも自由ですが、匿名といってもインターネットの匿名性は完全ではありません。
それは自己責任でどうぞ。

自分もストレス発散して、相手も多少は楽しめるように振舞うと、楽しいかもしれませんし、
逆にクサクなって楽しめないかもしれませんので、それも自己責任でどうぞ。
25デフォルトの名無しさん:02/10/26 23:29
インターネットの匿名性は完全じゃありませんが、
2ちゃんねるにカキコしているだけではばれることはありません。
2ちゃんねるはいわばインターネットの無法地帯のようなものです。

自分が楽しいことが相手が楽しいとは限りません。
自分が楽しくないことが相手が楽しいこともあります。
相手のことは何もわかりません。
現実世界では相手のことを思いやるべきですが、ここは2ちゃんねるです。
相手のことを考えるより素直に自分の思うがままやるのが一番2ちゃんねるらしいのです。
delphi 最強!
どうよ?
28畑山 浩介:02/11/16 21:30
まだか・
>>25が(・∀・)イイ!事言った!
ここは2ch。ネット上のダウンタウン。
やなやつはもっと上品なサイトにいけばいい。
delphi 以外は糞!!
>>30
お前が糞
はい、バカが来た
  ↓
36馬鹿:03/01/08 18:37
 な、何で馬鹿だと分かったんだ。

 どうでも良いけど、畑山君よ。ちっとは本かなんかで調べてたらどうな
んだい。秋葉原の「ラオックス書籍館」とかでプログラミング・コーナー
に行けばいくらでもあるだろう。「良い書籍はないですか?」とかなら、
まだ話が分かるけどよ。
37馬鹿:03/01/08 18:39
 上の >36 は「畑山」じゃなくて「畠山」だな。
 俺、本当の馬鹿だ。うーむ、もう今日は夜遅いから、寝るとする
か。おやすみ。
>>36
ageんな!
39IP記録実験:03/01/08 21:19
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
記念カキコ
職場、学校、座敷牢から気兼ねなく書き込みでける
ってゆってたのにー
プンスカ!!
>>363,>>367
サンクスコ
22 :ひろゆき ◆3SHRUNYAXA :03/01/08 17:19 ID:rLfxQ17l
   家族構成と小学校時代の恥ずかしかった思い出も記録されます。

======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
>>284
そうだよね。
勘違いしてる奴おおいし、

現実世界と同程度の責任を求められる事が当たり前になるように
なるといいね。

567が良い事言った          

>1 :ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ :03/01/08 17:13 ID:???
>そんなわけで、qbサーバでIPの記録実験をはじめましたー。

IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/l20

IP記録実験PART2
http://qb.2ch.net/test/read.cgi/accuse/1042020193/l20

これまでのあらすじは >>2-20 あたりに誰かお願い。
一年ぐらい前にニュー速でチョロっと騒いでた「TSB」の人?
あのスレ結局どうなったんだっけ?
保守
ところで今日も今日とて某ヲチ板の或厨がせっせと2chの中傷を自サイトで行ってるわけだが
(今日はグーグルまでもが中傷対象になってた)
ひろゆきは2chとして或厨を訴える気はないの?
オペラ
>>700
壁貼るな、ド阿呆
ワンクリックで確認できるだろ。
お馬鹿さんは来ないで欲しいってことですな
逆に質の低い書きこみが減ってさらに人が増えたりして
初めは気にするが、すぐに忘れるバカな日本人。
あげてみたり。
そういうのは厳しくなりそう
P2Pとかに潜るんでしょう
さよなら2ちゃんねる
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────










111 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:33 ID:rLfxQ17l
   >datの書いた内容とIPが対になってることを証明すんのもめんどくさいもんな。
   そゆことです。

114 名前:心得をよく読みましょう[] 投稿日:03/01/08 17:34 ID:ZxrhkN5z
   幼女をレイプします

119 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:35 ID:rLfxQ17l
      携帯電話からご苦労様です。

139 名前: ◆FruitsMIpE [sage] 投稿日:03/01/08 17:38 ID:s/ESWpsO
   「携帯から」とか公開しないでほすぃ。。

150 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:40 ID:rLfxQ17l
   みたいなことを書いたらそうなりますです。さん

170 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:42 ID:rLfxQ17l
   負荷が高そうなサーバにも入れて見ます。

217 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:49 ID:rLfxQ17l
   一定期間でログは消しますです。
以外や以外なんだか、かの国の方々は個人を対象にした訴訟を過去行ってないんだよ
国または政府とかの公共団体には裁判しかけてるけどね。
著作物や発言に関してはもっぱら発言撤回または削除の方針でがんばってる。

だから「チョン死ね」とかかいても個人が訴訟されるってのはまず考えなくていいんじゃないかな?

削除要請はともかく
前スレは、強い電波が検出されちゃったからじゃないかな。。。
大阪JCネタ
それもどうかと思うけどな(^_^;)
やはり「書き込むことに責任あることを認識しろ」かと。

つーか、まもなく6億〜
メロパンナというのは気合いはいってるな!!IPとることにしたのにソンゴクウと同じことしてやがる。俺なんかマンコとかくだけで全エネルギー使い果たすほど緊張してるつてのによ
中年オヤジはこれだから困る
自分で書き込んで1人で笑ってるんだろうな
 スレッガーさんかい?
完全終了
delphi 以外は糞!!
神戸
日本の法>>>>>>>>>>(超えられない壁)>>>>>>>>>>>>>>>>2ちゃんのルール

今更の話題によく盛り上がってるな。年明け初2ちゃん組か?
自作PC板やハード板やDTM板がIEからのアクセスで見れません。
専用ブラウザでは見れます。対処お願いします。
74山崎渉:03/01/13 18:32
(^^)
ガックシ・・(鬱
76デフォルトの名無しさん:03/01/14 15:32
私は韓国人は優秀です。
しかし日本人は少し優秀でないと思います。
歴史の違いだと思います。
しかし日本には伸び行く歴史があると思います。
なんでこの版だけ、最近わけ分からんスレや書き込み多いんだ?
78山崎渉:03/01/15 17:46
(^^)
山崎が2回も来ている時点でこのスレは不吉なり
80山崎渉:03/01/23 21:55
(^^)
うぉーえっへっへほっへうぉーへっへっへほっへ
うぉーえっへっへほっへうぉーへっへっへほっへ
うぉーえっへっへほっへうぉーへっへっへほっへ
げださばっ!うっ!
びんびんまっちょで〜(おーえおーえ〜
がんがんいっとけぇ(おえおえお
83デフォルトの名無しさん:03/04/10 17:29
ほしゅ
84デフォルトの名無しさん:03/04/11 07:51
Label1.Caption := ExtractFilePath(Application.ExeName);
で、実行ファイルのある場所、「C:\FolderName\」が取得できましたが、
この文字列の最後の「\」を取り除いた実行ファイルのパスを取得するには、どのようにすれば良いのでしょうか?
ExtractFileDir
または
ExcludeTrailingPathDelimiter
を Help で調べて。
86人いないスレ:03/04/12 23:08
(´-`)。o ○ (マルチポストだわ、放置だわ、ひどいな…)
87山崎渉:03/04/17 15:31
(^^)
88デフォルトの名無しさん:03/04/29 01:20
89デフォルトの名無しさん:03/04/29 19:56
ハタケヤマクンとほぼ同時期に Delphi を始めました。
Delphi の仕組みはだいぶ理解出来るようになりましたが、
今でもアルゴリズム(や、論理的思考法)はよくわかりませんよ。
先週まで、LZSS 符号化について実験していましたが、移動窓の実装で投げ出したくらいです。
今週は、 MD5 とかいう暗号化機構を、自作テキストエディタに乗せようと四苦八苦している最中です。
これもなかなか理解し辛く、投げ出しそうですが、まだなんとかがんばってます。
ハタケヤマクソはどうですか?
90畠山 幸助:03/04/29 20:02
開発環境をHSPに移しました。
これは戦略的撤退です。
91当人:03/04/30 05:26
マルチポストではないが、勝手に貼られていたらしい
92畠山 幸助:03/04/30 08:39
先月から意識改革の集まりに参加しているのですが、
今日は「町に出よう」をテーマに皆で白装束姿になってポルモレキア(母の家)の周りを巡回しました。
すると困ったことに電磁波をガンガン飛ばしながら走る車がたくさん通っていたんです。驚きました。
「このままだとイーガルウッダ(気による交流)に支障が出るね。鏡で反射させよう。」ということになり
大きな反射板を持って道路を封鎖してみました。この後すごく嫌なことが起こったんだけど、
ここに書くのは止めておきます。マスコミって最悪ですね。ホント。
あとデルファイはしばらく中止します。適当にレスしてスレ残しといて下さい。
93デフォルトの名無しさん:03/05/02 23:01
ここも重複スレだな
94山崎渉:03/05/28 13:09
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
まだか・
96山崎 渉:03/07/15 15:20

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
勉強のために見てたサイトが消えた・・・・。
まだ途中だったのにィ(´_`)
98山崎 渉:03/08/02 02:40
(^^)
99謎の紳士:03/08/14 07:00
畑山君 テキストエディタを作る方法は以下のサイトで勉強しなさい。
http://www.w-frontier.com/delphi/3_menu.html
100謎の紳士:03/08/14 19:44
100get
101山崎 渉:03/08/15 15:23
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
102デフォルトの名無しさん:03/08/17 04:14
マジメな話、Delphiで絶対に作れないアプリにはどのようなものがあるのですか?
103あぼーん:あぼーん
あぼーん
104デフォルトの名無しさん:03/08/17 04:34
ないよ
>>102
なんでも作れます。 アプリなんてしょせん、バイトの集まりですから。
106デフォルトの名無しさん:03/08/29 17:59
>>89
テキストエディタにハッシュが必要なのか?
どんな機能だい?
でるぷひ
>>102
Macアプリ
109デフォルトの名無しさん:03/09/25 23:16
バッファオーバーフロー教室
ずいぶんとうれしそうにageてるね。
111デフォルトの名無しさん:03/10/03 23:20
畠山くんのバッファオーバーフロー教室
112デフォルトの名無しさん:03/10/04 00:48
釣れた(藁
まだあったのかYO!このスレ
と、>>1さんが保全に参りました。
115鼻山:04/02/20 22:40
よし、今から オセロもどきを作ろうと思う。

まずは、型の宣言だな。やっぱりな。抽象化が必要だよな?

じゃ、駒からだ。
type TKOMA=(koNone,koWhite,koBlack);

どうだこの素晴らしい抽象化。 何も置いてないときは koNone、白黒は、koWhiteに koBllackだよ。
これはもう完璧な型宣言だろう。だからinterface部、 uses のすぐ後に書いてやろう。


116鼻山:04/02/20 22:42
次には、当然盤の型宣言だな。
これはもう、配列しかないだろ? な? じゃあこうだろ?

type TBAN =array [0..7,0..7]of TKOMA;

盤は駒が8x8に置けるんだからこれしかないよな?
なんでこんなのがagaって来るんだよ
沈め!沈め!
118鼻山:04/02/20 22:52
じゃあ下げで。

次は、表示だ。 Delphiには DrawGridって便利なコンポーネントがある。
これを貼り付けて、 そうだな。サイズが変更されても追従するように、
初期化はフォームのOnResizeでやろう。

procedure TForm1.FormResize(Sender: TObject);
begin
 with DrawGrid1 do begin
  ScrollBars:=ssNone;
  ColCount:=8;
  RowCount:=8;
  DefaultColWidth:=Width div ColCount;
  DefaultRowHeight:=Height div RowCount;
  FixedCols:=0;
  FixedRows:=0;
 end;
end;


よし、実行っと・・・・ありゃ? ssNoneが無いって? 
ヘルプ出すと StdCtrls にあるのか 何で StdCtrlsが自動的にusesされないんだ?

まあいいや、 uses に StdCtrlsを追加すりゃいいだけだろ。よしよし、とりあえず枠は表示されたと。
119鼻山:04/02/20 23:05
最初にやる事は、当然、盤を綺麗にすることだ。 だとしたら、手続きを作ろう。

まあ、メソッドの方が格好いいかもしれないけど、とりあえず手続きでやって必要になってから変えりゃいいや。

procedure InitBAN(var BAN:TBAN);
var x,y:Integer;
begin
  for x:=Low(BAN) to High(BAN) do
   for y:=Low(BAN[x]) to High(BAN[x]) do
    BAN[x,y]:=koNone;

BAN[3,3]:=koWhite;
BAN[4,4]:=koWhite;
BAN[3,4]:=koBlack;
BAN[4,3]:=koBlack;
end;

こんなもんだな。
これをフォームのOnCreateで呼び出せばいいだろ。
procedure TForm1.FormCreate(Sender: TObject);
begin
InitBAN(BAN);
end;
120鼻山:04/02/20 23:06
おっと、var BAN:TBAN をどこに置こう。
一つあればいいんだから、グローバル変数でもいいけど、
とりあえず、これもフォームの public部でいいか。

ここに置く時はvar は不要だから、

TForm1 = class(TForm)
  DrawGrid1: TDrawGrid;
  procedure FormResize(Sender: TObject);
  procedure FormCreate(Sender: TObject);
  public
   BAN:TBAN;
  end;
121鼻山:04/02/20 23:09
さあ、次は、この初期状態を表示させるぞ。
これはDrawGridのOnDrawCell に書けばいい筈。

えい、まずは力技で、
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  DrawGrid1 .Canvas.Pen.Color:=clBlack;
  case BAN[ACol,ARow] of
   koWhite:DrawGrid1. Canvas.Brush.Color:=clWhite;
   koBlack:DrawGrid1 .Canvas.Brush.Color:=clBlack;
  end;

  case BAN[ACol,ARow] of
   koWhite,koBlack: DrawGrid1.Canvas.Ellipse(Rect);
  end;
end;

これでどうだ。とりあえず表示されたぞ。
122鼻山:04/02/20 23:11
へへ、DrawCell1のAnchorsを全部Trueにしたら期待通り、フォームのサイズ変更したら
自動的に駒も描画されやがる。

ちくしょう、可愛いやつめ。
123鼻山:04/02/20 23:19
さあて、次に駒を置く操作と、置けたらひっくり換える操作が必要だな。

その為には、置けるかどうか検査する処理が必要だぞ。
それは関数だな。 引数は盤と駒と、その位置だから
function okeruka(const BAN:TBAN;K:TKOMA;x,y:Integer)

で、帰り値は 論理型でいいだろ。
124鼻山:04/02/20 23:24

どういう場合に駒が置けるか? どういう場合に駒が置けないのか?

まずは、既にに駒があったら置けないな
盤のx,y位置が空である事が条件だ。
Result:=BAN[x,y]=koNone; if not Result then exit;

って事だな。

それから、相手の駒を挟めないと置けない。
これはチョット考えないといけないぞ。

125鼻山:04/02/20 23:30
まあ考えるより手を動かそう。

まず相手の駒を返す関数を作ろうか。


function AiteNoKoma(K:TKOMA):TKOMA;
begin
  result:=koNone;
  case K of
  koWhite: Result:=koBlack;
  koBlack: Result:=koWhite;
  end;
end;
126鼻山:04/02/20 23:38
で8方向に
 1、最初の隣が相手の駒でないとダメ

 2、次の駒が相手の駒ならさらに検索、空白か盤を超えたらダメ

 3、自分の駒が見つかれば置ける

って感じで調べたらいい。
8方向は ステップ dx,dyで表現、位置はx,yで表現しよう。
127鼻山:04/02/21 00:06
とりあえず、文章をそのままコードにしてみよう。
関数 okerukaはこうだ。

置ける場所があって、置ける駒であって、8方向どこかで相手を挟める事


begin
Result:=BAN[x,y]=koNone; if not Result then exit;
Result:=K<>koNone; if not Result then exit;
Result:=Check( 0, 1,x,y); if Result then exit;
Result:=Check( 1, 0,x,y); if Result then exit;
Result:=Check( 0,-1,x,y); if Result then exit;
Result:=Check(-1, 0,x,y); if Result then exit;

Result:=Check( 1, 1,x,y); if Result then exit;
Result:=Check( 1,-1,x,y); if Result then exit;
Result:=Check(-1,-1,x,y); if Result then exit;
Result:=Check(-1, 1,x,y);
end;

2つの条件は満たさなければならないからif NOT 、8つの条件はどれか一つだだから if だ。
128鼻山:04/02/21 00:08
で、Checkという関数は関数内関数で書いてみる。
駒の隣と、その後では別けなきゃいけないから、さらに関数内関数を呼ぼう。

function okeruka(const BAN:TBAN;K:TKOMA;x,y:Integer):boolean;
function Check(dx,dy,x,y:Integer):boolean;
function Check1:boolean;
begin
x:=x+dx;
y:=y+dy;
Result:= x >=LOW(BAN); if not Result then exit;
Result:= x <=HIGH(BAN); if not Result then exit;
Result:= y >=LOW(BAN[x]); if not Result then exit;
Result:= y <=HIGH(BAN[x]); if not Result then exit;
Result:= BAN[x,y]=AiteNoKoma(K) ;
end;
function Check2:boolean;
begin
x:=x+dx;
y:=y+dy;
Result:= x >=LOW(BAN); if not Result then exit;
Result:= x <=HIGH(BAN); if not Result then exit;
Result:= y >=LOW(BAN[x]); if not Result then exit;
Result:= y <=HIGH(BAN[x]); if not Result then exit;
if BAN[x,y]=AiteNoKoma(K) then Result:= Check2;
result:= BAN[x,y]=K;
end;
begin
Result:=Check1; if not Result then exit;
Result:=Check2;
end;

129鼻山:04/02/21 00:21
ふぁああ。なんか眠くなった。 そんなに面白くなかったしな。 じゃバイ
「koBllackだよ。 」
面白かったよ。いい意味で
>>130
レスつけんなよ
132鼻山:04/02/21 19:10
>>130ありがとうよ。
とりあえず、もう少しオセロらしく動くようにしてから止める事にする。
まずは、>>128は同じ事をCheclk1 Check2でやってるんでそれをマトメテおこう。
133鼻山:04/02/21 19:12
function okeruka(const BAN:TBAN;K:TKOMA;x,y:Integer):boolean;
 function Check(dx,dy,x,y:Integer):boolean;
  function Check0:boolean;
   begin x:=x+dx;  y:=y+dy;
       Result:= x >=LOW(BAN);  if not Result then exit;
       Result:= x <=HIGH(BAN); if not Result then exit;
       Result:= y >=LOW(BAN[x]);  if not Result then exit;
       Result:= y <=HIGH(BAN[x]); if not Result then exit;
   end;
  function Check1:boolean;
  begin  Result:= Check0; if not Result then exit;
        Result:=  BAN[x,y]=AiteNoKoma(K) ;
  end;
  function Check2:boolean;
  begin Result:= Check0; if not Result then exit;
   if  BAN[x,y]=AiteNoKoma(K)
     then Result:= Check2
     else result:= BAN[x,y]=K;
  end;
 begin   Result:=Check1; if not Result then exit;  Result:=Check2;
 end;
134鼻山:04/02/21 19:12
続きは前のまま

begin
 Result:=BAN[x,y]=koNone;  if not Result then exit;
 Result:=K<>koNone;        if not Result then exit;
 Result:=Check( 0, 1,x,y);   if  Result then exit;
 Result:=Check( 1, 0,x,y);   if  Result then exit;
 Result:=Check( 0,-1,x,y);   if  Result then exit;
 Result:=Check(-1, 0,x,y);   if  Result then exit;
 Result:=Check( 1, 1,x,y);   if  Result then exit;
 Result:=Check( 1,-1,x,y);   if  Result then exit;
 Result:=Check(-1,-1,x,y);   if  Result then exit;
 Result:=Check(-1, 1,x,y);
end;
135鼻山:04/02/21 19:18
置けるかどうかの判定が出来たので、次は実際に駒を置く事を考える。
function KomaWoOku(var BAN:TBAN;var K:TKOMA;x,y:Integer):boolean;

今度はBAN K は参照型って奴にした。 これで、呼び出した方の変数が変更される筈だ。
置けたら置いて、相手の手番にして終わるという処理をする為には K も参照型にしなくちゃな。

begin
 Result:=False;
 if okeruka(BAN,K,x,y) then begin
  Result:=Flip( 0, 1,x,y);
  Result:=Flip( 1, 0,x,y);
  Result:=Flip( 0,-1,x,y);
  Result:=Flip(-1, 0,x,y);

  Result:=Flip( 1, 1,x,y);
  Result:=Flip( 1,-1,x,y);
  Result:=Flip(-1,-1,x,y);
  Result:=Flip(-1, 1,x,y);
  BAN[x,y]:=K;
  K:=AiteNoKoma(K);
  Result:=True;
 end;
end;

Flipは駒をヒックリ返す処理のつもりだ。
136鼻山:04/02/21 19:23
前の処理からそのままコピペしたから Result:=Flipなんてしてるが、Flipは関数にする必要はないな。

この駒をヒックリ返す処理が問題か。

前の置けるかどうかの判定で、再帰を使ったけど、判定に成功したら再帰で
帰ってくる時のループを使えば簡単じゃないかな?

判定に成功したらisOKって変数をTrueにしてやればいい。
って事で、判定ルーチンからコピペしてくる。

137鼻山:04/02/21 19:24
procedure Flip(dx,dy,x,y:Integer);
  var isOK:boolean;
 function Check0:boolean;
  begin
    x:=x+dx; y:=y+dy;
    Result:= x >=LOW(BAN); if not Result then exit;
    Result:= x <=HIGH(BAN); if not Result then exit;
    Result:= y >=LOW(BAN[x]); if not Result then exit;
    Result:= y <=HIGH(BAN[x]); if not Result then exit;
  end;
 function Check1:boolean;
begin  Check0; if not Result then exit;
      Result:= BAN[x,y]=AiteNoKoma(K) ;
 end;
 procedure Flip2;
 begin
  if not Check0 then exit;
  if BAN[x,y]=AiteNoKoma(K)
  then Flip2
  else isOK:= BAN[x,y]=K;
  if isOK then begin
    x:=x-dx;
    y:=y-dy;
    BAN[x,y]:=K;
  end;
 end;
begin
  isOK:=false;
  Result:=Check1; if not Result then exit;
  Flip2;
end;
138鼻山:04/02/21 19:26
これで、相手の駒があって、その先に自分の駒を見つけた時に isOKがTrueになる。

で、それから帰る時に isOKがTrueだったら 座標を戻して、その駒を自分の駒にしながら帰れば、
おお、ちゃんと勘定が合う。

・・・・当然か。
139鼻山:04/02/21 19:28
このルーチンをテストするにはと、

まあとりあえず、OnSelectCellに入れちゃえ。

procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
 KomaWoOku(BAN,TEBAN, ACol, ARow);
  DrawGrid1.Invalidate;
end;



ヘヘ、とりあえず動いてるな。 満足だ。


次はパスだな。 置けない場合にパスが出来なくちゃな。

それには、どこにも置けないって判定が必要だな。
140鼻山:04/02/21 19:32
ムム
 簡単にやっつけるには、盤を全部 okeruka でチェックすりゃいいんだろうが、
 それって格好悪くないか?

・・・

っと思ったが、実行しても大した時間かからんな。 これでいいのか?

いいんだよな?
141鼻山:04/02/21 19:43
おっと、これが正しいかテストするのに時間くっちまった

function isPass(const BAN:TBAN;K:TKOMA):boolean;
var x,y:Integer;
begin
  Result:=false;
  for x:=Low(BAN) to High(BAN) do
  for y:=Low(BAN[x]) to High(BAN[x]) do
  if okeruka(BAN,K,x,y) then
  exit;
  Result:=True;
end;


こりゃ、なんかテストする方法考えないとダメだな。 
期待してます
143デフォルトの名無しさん:04/02/28 17:03
ハッ!
よくみたら「鼻」山だ!
おそっ!
誰か続ききぼんぬ
期待あげ
146鼻山:04/02/29 08:42
いや、スマン。
オセロプログラムのテストを、そのプログラム自身にやらせるにはどうやったらいいか

考えてたらそっちが面白くなったというか、行き詰まったというか・・・
>>146
>考えてたらそっちが面白くなったというか、行き詰まったというか・・・

・・・ん??
白黒ハッキリしてくださいよ!
ガンガレ期待してます
>>147
うまい
>>147
うまい
>>147
うまい
151でぶや:04/03/04 23:11
>>147
まいう〜
152ほんじゃまか石塚:04/03/05 17:06
>>147
おいしいを通り越して、おいD
153デフォルトの名無しさん:04/06/14 22:31
誰か続ききぼんぬ
期待あげ
>>鼻山

個人的にはCPUのロジックの手順が早く知りたいな
155Socket775:04/06/16 20:43
Delphi 6無料版を落としてこい。
付録のチュートリアルの内容が、そのものズバリ
「テキストエディタの作り方」だ。
説明の通りやってけば誰でもできる。
>>155
そのチュートリアルはPersonal版では進められないわけだが。
>>154
先に日本語勉強しような
158デフォルトの名無しさん:04/07/26 22:49
期待+ヽ(`Д´)ノ ボボボボボボッキアゲ
159デフォルトの名無しさん:04/08/29 17:17
期待+ヽ(`Д´)ノ ボボボボボボッキアゲ
160デフォルトの名無しさん:04/09/05 19:36
期待+ヽ(`Д´)ノ ボボボボボボッキアゲ
>>畠山→鼻山
ワロタ