L N P Y F C T V W Z I X Pentomino Form Name Caption Position FormMain podesktopcenter

Similar documents
1 シミュレーションとは何か?

Microsoft PowerPoint - DELPHI�礔.ppt

<リスト1> AD コンバータへのデータの出力例 NEC PC98 用 mov al,22h // CLK -> 1, CS -> 0, DI -> 0 out 32h,al // シリアル ポートにデータ出力 PC/AT 互換機用 mov al,00h // CLK -> 1 mov dx,3fb

初 めての ios アプリケーション iphone Form TLabel TButton. 図. コントロールの 配 置 Button OnClick Button. 00

Pascal Pascal Free Pascal CPad for Pascal Microsoft Windows OS Pascal

開発者が知りたい実践プログラミングテクニック! ~明日から使えるテクニック集~

Java演習(4) -- 変数と型 --


untitled

AHPを用いた大相撲の新しい番付編成

JavaScript 1.! DOM Ajax Shelley Powers,, JavaScript David Flanagan, JavaScript 2

第10回 コーディングと統合(WWW用).PDF

Embarcadero Developer Camp

PowerPoint プレゼンテーション

untitled

t1

Embarcadero Developer Camp

K227 Java 2

新・明解Java入門

Microsoft PowerPoint - はじめてのDataSnapアプリケーション_

知って得する!現役ヘルプデスクが答えるDelphiテクニカルエッセンス 9.0

untitled

BASICとVisual Basic

untitled

PowerPoint プレゼンテーション


解きながら学ぶJava入門編

JavaScript の使い方

CodeGear Developer Camp

卒業論文.PDF

Microsoft PowerPoint - はじめてのDataSnapアプリケーション_

1. A0 A B A0 A : A1,...,A5 B : B1,...,B

8 if switch for while do while 2

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

My関数の作成演習問題集

ブロック パニック

: gettoken(1) module P = Printf exception End_of_system (* *) let _ISTREAM = ref stdin let ch = ref ( ) let read () = (let c =!ch in ch := inp

FPGA TU0135 (v1.0) FPGA Desktop NanoBoard FPGA CUSTOM_INSTRUMENT FPGA GUI ( ) IO GUI IO DelphiScript Desktop NanoBoard NB2DSK01 FPGA Desktop

sinfI2005_VBA.doc

バスケットボール

Java updated

JavaScript演習

橡点検記録(集約).PDF

Java学習教材


22nd Embarcadero Developer Camp G6

Lesson 1 1 EXVBA2000 Lesson01 Lesson01.xls 2

D0020.PDF

橡WINAPLI.PDF

B 5 (2) VBA R / B 5 ( ) / 34

ALG ppt

2005 D Pascal CASL ( ) Pascal C 3. A A Pascal TA TA TA

2 1/2 1/4 x 1 x 2 x 1, x 2 9 3x 1 + 2x 2 9 (1.1) 1/3 RDA 1 15 x /4 RDA 1 6 x /6 1 x 1 3 x 2 15 x (1.2) (1.3) (1.4) 1 2 (1.5) x 1

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

netcdf

Excel ではじめる数値解析 サンプルページ この本の定価 判型などは, 以下の URL からご覧いただけます. このサンプルページの内容は, 初版 1 刷発行時のものです.

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

# let st1 = {name = "Taro Yamada"; id = };; val st1 : student = {name="taro Yamada"; id=123456} { 1 = 1 ;...; n = n } # let string_of_student {n

コンピュータ概論

Excel Excel Excel = Excel ( ) 1

2009 D Pascal CASL II ( ) Pascal C 3. A A Pascal TA TA

アルゴリズムとデータ構造1

コンピュータ概論

untitled

2011 D Pascal CASL II ( ) Pascal C 3. A A Pascal TA TA enshu-

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

94 expression True False expression FalseMSDN IsNumber WorksheetFunctionIsNumberexpression expression True Office support.office.com/ja-jp/ S

知って得する!現役ヘルプデスクが答えるDelphiテクニカルエッセンス

CodeIgniter Con 2011, Tokyo Japan, February

ch31.dvi

Transcription:

1. 1 1 1.1 5 12 60 3 20 4 15 5 12 6 10 12 L N P Y F C T V W Z I X 1.1.1 1.2 Pentomino 1.2.1 Form Name Caption Position FormMain podesktopcenter 1.2.2 unit PentominoU; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; (************ **********)

1. 2 type TFormMain = class(tform) private { Private } public { Public } FormMain: TFormMain; implementation {$R *.DFM} (********** **********) (********** THako **********) (********** TFormMain ******) (********** ********) end. 1.2.3 Panel Align Name Caption albottom PanelMain 1.2.4 Button Name ButtonClose OnClick (********** ********) procedure TFormMain.ButtonCloseClick(Sender: TObject); Close; {ButtonCloseClick} end.

1. 3 1.3 (************ **********) type TKomaNo = 1..12; TMinoNo = 1..5; TMukiNo = 1..8; TKomas = array [TKomaNo,TMukiNo,TMinoNo] of Byte; TMasuNo = 0..219; TJouhou = 0..13; THako = class(timage) private Masus : array [TMasuNo] of TJouhou; Hako 10 22 MasuNo 0 10 20 30 40 50 60 70 80 90 190 200 210 1 11 21 31 41 51 61 71 81 91 191 201 211 2 12 22 32 42 52 62 72 82 92 192 202 212 3 13 23 33 43 53 63 73 83 93 193 203 213 4 14 24 34 44 54 64 74 84 94 194 204 214 5 15 25 35 45 55 65 75 85 95 195 205 215 6 16 26 36 46 56 66 76 86 96 196 206 216 7 17 27 37 47 57 67 77 87 97 197 207 217 8 18 28 38 48 58 68 78 88 98 198 208 218 9 19 29 39 49 59 69 79 89 99 199 209 219 1.4 1.4.1 Hako Create ZenbuKaku THako = class(timage) private Masus : array [TMasuNo] of TJouhou; procedure ZenbuKaku; public constructor Create(AOwner: TComponent); override; (********** THako **********) procedure THako.ZenbuKaku;

1. 4 I,J: Byte; with Canvas do Brush.Color := clwhite; FillRect(ClipRect); for I := 0 to 10 do MoveTo(0,I*24); LineTo(22*24,I*24); for J := 0 to 22 do MoveTo(J*24,0); LineTo(J*24,10*24); {ZenbuKaku} constructor THako.Create(AOwner: TComponent); inherited; Parent := TWinControl(AOwner); Width := 24*22; Height := 24*10; Canvas.Font.Name := ; Canvas.Font.Height := 24; Canvas.Font.Pitch := fpfixed; ZenbuKaku;; {Create} 1.4.2 FormMain private { Private } Hako: THako; private 1.4.3 Form OnCreate procedure TFormMain.FormCreate(Sender: TObject); Hako := THako.Create(Self); {FormCreate} 1.4.4 10 22

1. 5 1.5 0 10 20 30 40 50 60 70 80 90 190 200 210 1 11 21 31 41 51 61 71 81 91 191 201 211 2 12 22 32 42 52 62 72 82 92 192 202 212 3 13 23 33 43 53 63 73 83 93 193 203 213 4 14 24 34 54 64 74 84 94 194 204 214 5 15 25 35 55 65 75 85 95 195 205 215 6 16 26 36 56 66 76 86 96 196 206 216 7 17 27 37 67 77 87 97 197 207 217 8 18 28 38 48 58 68 78 88 98 198 208 218 9 19 29 39 49 59 69 79 89 99 199 209 219 (44,45,46,47,57) (60,61,62,63,73) 5 (0,1,2,3,13) 0 5 44 60 1 8 1.5.1 type THako = class(timage) private Masus : array [TMasuNo] of TJouhou; procedure ZenbuKaku; public constructor Create(AOwner: TComponent); override; const Name : array [TKomaNo] of string[2] = (,,,,,,,,,,, ); MukiMax : array [TKomaNo] of TMukiNo = (8,8,8,8,8,4,4,4,4,4,2,1); Iro : array [TKomaNo] of TColor = ($C0C0FF,$C0FFC0,$C0FFFF,$FFC0C0,$FFC0FF,$FFFFC0, $8080FF,$80FF80,$80FFFF,$FF8080,$FF80FF,$FFFF80); Komas : TKomas = ( (( 0, 1, 2, 3,13),( 0,10,20,29,30),( 0,10,11,12,13),( 0, 1,10,20,30), ( 0,10, 9, 8, 7),( 0,10,20,30,31),( 0, 1, 2, 3,10),( 0, 1,11,21,31)), // 2 10 // (( 0, 1, 8, 9,10),( 0, 1, 8, 9,10),( 0, 1, 8, 9,10),( 0, 1, 8, 9,10), ( 0, 1, 8, 9,10),( 0, 1, 8, 9,10),( 0, 1, 8, 9,10),( 0, 1, 8, 9,10)),

1. 6 (( 0, 1, 2,10,11),( 0, 1, 2,10,11),( 0, 1, 2,10,11),( 0, 1, 2,10,11), ( 0, 1, 2,10,11),( 0, 1, 2,10,11),( 0, 1, 2,10,11),( 0, 1, 2,10,11)), (( 0, 9,10,11,12),( 0, 9,10,11,12),( 0, 9,10,11,12),( 0, 9,10,11,12), ( 0, 9,10,11,12),( 0, 9,10,11,12),( 0, 9,10,11,12),( 0, 9,10,11,12)), (( 0,10,11,12,21),( 0,10,11,12,21),( 0,10,11,12,21),( 0,10,11,12,21), ( 0,10,11,12,21),( 0,10,11,12,21),( 0,10,11,12,21),( 0,10,11,12,21)), (( 0, 1, 2,10,12),( 0, 1, 2,10,12),( 0, 1, 2,10,12),( 0, 1, 2,10,12), ( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0)), (( 0,10,11,12,20),( 0,10,11,12,20),( 0,10,11,12,20),( 0,10,11,12,20), ( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0)), (( 0, 1, 2,12,22),( 0, 1, 2,12,22),( 0, 1, 2,12,22),( 0, 1, 2,12,22), ( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0)), (( 0, 1,11,12,22),( 0, 1,11,12,22),( 0, 1,11,12,22),( 0, 1,11,12,22), ( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0)), (( 0,10,11,12,22),( 0,10,11,12,22),( 0,10,11,12,22),( 0,10,11,12,22), ( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0)), (( 0, 1, 2, 3, 4),( 0,10,20,30,40),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0), ( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0)), (( 0, 9,10,11,20),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0), ( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0),( 0, 0, 0, 0, 0))); 1.5.2 Hako KomaWoKaku (********** THako **********) procedure THako.KomaWoKaku(Koma: TKomaNo; Muki: TMukiNo; Kijun: TMasuNo); N : Byte; Masu: TMasuNo; I,J: Byte; with Canvas do Brush.Color := Iro[Koma]; for N := 1 to 5 do Masu := Kijun+Komas[Koma,Muki][N]; I := Masu mod 10; J := Masu div 10; TextOut(J*24,I*24,Namae[Koma]); {KomaWoKaku} 1.5.3 Win32/TrackBar 2

1. 7 Align alleft alleft Name TrackBarKoma TrackBarMuki Min 1 1 Max 12 8 Position 1 1 1.5.4 Button Name ButtonJikkou OnClick procedure TFormMain.ButtonJikkouClick(Sender: TObject); Koma: TKomaNo; Muki: TMukiNo; Koma := TrackBarKoma.Position; Muki := TrackBarMuki.Position; Hako.ZenbuKaku; Hako.KomaWoKaku(Koma,Muki,45); if Muki < MukiMax[Koma] then TrackBarMuki.Position := Muki+1 else TrackBarMuki.Position := 1; if Koma < 12 then TrackBarKoma.Position := Koma+1 else TrackBarKoma.Position := 1; {ButtonJikkouClick} 1.5.5 1.6 1.6.1 THako Tate,Yoko THako = class(timage) private Masus : array [TMasuNo] of TJouhou; No: Byte; Tate,Yoko: Byte;

1. 8 1.6.2 THako HakoWoKimeru procedure THako.HakoWoKimeru; I,J: Byte; Tate := No+2; Yoko := 60 div Tate; with Canvas do Brush.Color := clgray; FillRect(ClipRect); for I := 1 to Tate+1 do MoveTo(24,I*24); LineTo((Yoko+1)*24,I*24); for J := 1 to Yoko+1 do MoveTo(J*24,24); LineTo(J*24,(Tate+1)*24); Width := Yoko*24+48; Height := Tate*24+48; Left := (FormMain.ClientWidth-Width) div 2; Top := (FormMain.ClientHeight-FormMain.PanelMain.Height-Height) div 2; {HakoWoKimeru} 1.6.3 RadioGroup Align alleft Name RadioGroupHako Caption Items Columns 4 OnClick procedure TFormMain.RadioGroupHakoClick(Sender: TObject); Hako.No := RadioGroupHako.ItemIndex+1; Hako.HakoWoKimeru; {RadioGroupHakoClick}

1. 9 1.6.4 1.6.5 FormCreate default procedure TFormMain.FormCreate(Sender: TObject); Hako := THako.Create(Self); RadioGroupHako.ItemIndex := 3; // {FormCreate} 1.6.6 1.7 TrackBar 1.7.1 THako Oku procedure THako.Oku(Koma: TKomaNo; Muki: TMukiNo; Kijun: TMasuNo); N : TMinoNo; for N := 1 to 5 do Masus[Kijun+Komas[Koma,Muki,N]] := Koma; KomaWoKaku(Koma,Muki,Kijun); {Oku} 1.7.2 THako HakoMOuseDown procedure THako.HakoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); I,J: Byte; Kijun: TMasuNo; Koma: TKomaNo; Muki: TMukiNo; I := Y div 24;

1. 10 J := X div 24; Kijun := J*10+I; Koma := FormMain.TrackBarKoma.Position; Muki := FormMain.TrackBarMuki.Position; if (Muki <= MukiMax[Koma]) then Oku(Koma,Muki,Kijun); {HakoMouseDown} THako.Create 1 ZenbuKaku; OnMouseDown := HakoMouseDown; {Create} 1.7.3 1.1 1.8 1.8.1 THako Okeru function THako.Okeru(Koma: TKomaNo; Muki: TMukiNo; Kijun: TMasuNo): Boolean; N : Byte; N := 1; while (N <= 5) and (Masus[Kijun+Komas[Koma,Muki,N]] = 0) do Inc(N); Okeru := N > 5; {Okeru} 1.8.2 HakoMouseDown //if (Muki <= MukiMax[Koma]) if (Muki <= MukiMax[Koma]) and Okeru(Koma,Muki,Kijun) then Oku(Koma,Muki,Kijun); {HakoMouseDown}

1. 11 1.8.3 1.9 Masus[ ] 13 0 1.9.1 HakoWoKimeru 1.9.2 1.2 1.10 PentominoTansakuU PentominoTansakuP 1.11 THako KomaWoKesu Nozoku KomaWoKaku Oku procedure THako.KomaWoKesu(Koma: TKomaNo; Muki: TMukiNo; Kijun: TMasuNo); N : TMinoNo; Masu: TMasuNo; I,J: Byte; with Canvas do Brush.Color := clwhite; // for N := 1 to 5 do

1. 12 Masu := Kijun+Komas[Koma,Muki,N]; I := Masu mod 10; J := Masu div 10; {KomaWoKesu} TextOut(J*24,I*24, ); // // procedure THako.Nozoku(Koma: TKomaNo; Muki: TMukiNo; Kijun: TMasuNo); N : TMinoNo; for N := 1 to 5 do Masus[Kijun+Komas[Koma,Muki,N]] := 0; // KomaWoKesu(Koma,Muki,Kijun); {Nozoku} // 1.11.1 HakoMouseDown if (Muki <= MukiMax[Koma]) and Okeru(Koma,Muki,Kijun) then Oku(Koma,Muki,Kijun) else Nozoku(Koma,Muki,Kijun); // {HakoMouseDown} 1.11.2 11 1.11.3 TrackBar 2 HakoMouseDown 1.12 1.12.1 THako TNokori = set of TKomaNo; THako = class(timage) private Masus : array [TMasuNo] of TJouhou; Tate,Yoko: Byte; KaiNo: Integer; Tuzukeru: Boolean; Hyouji: Boolean;

1. 13 1.12.2 THako KaiHakken Tansaku procedure THako.KaiHakken; { } Inc(KaiNo); Tuzukeru := MessageDlg(IntToStr(KaiNo)+ +#13+#13+, mtconfirmation,[mbyes,mbno],0) = mryes; {KaiHakken} procedure THako.Tansaku(Kijun: TMasuNo; Nokori: TNokori); {recursive procedure} {Kijun Nokori } Koma: TKomaNo; Muki: TMukiNo; if Tuzukeru then if Nokori = [] then KaiHakken else while Masus[Kijun] > 0 do Inc(Kijun); for Koma := 1 to 12 do if Koma in Nokori then for Muki := 1 to MukiMax[Koma] do if Okeru(Koma,Muki,Kijun) then Oku(Koma,Muki,Kijun); Tansaku(Kijun+1,Nokori-[Koma]); Nozoku(Koma,Muki,Kijun); {Tansaku} 1.12.3 Caption OnClick procedure TFormMain.ButtonJikkouClick(Sender: TObject); Hako.KaiNo := 0; Hako.Tuzukeru := True; Hako.Tansaku(1,[1..12]); {ButtonJikkouClick} 1.12.4

1. 14 1.12.5 HakoWoKimeru Left := (FormMain.ClientWidth-Width) div 2; Top := 48; // for I := 0 to 219 do Masus[I] := 13; for I := 1 to Tate do for J := 1 to Yoko do Masus[J*10+I] := 0; {HakoWoKimeru} 1.13 1.13.1 Repaint; // {KomaWoKaku} Repaint; // {KomaWoKesu} 1.13.2 1.14 1.14.1 RadioGroup RadioGroup Align alleft Name RadioGroupHyouji Caption Items Columns 2 ItemIndex 1

1. 15 1.14.2 OnClick procedure TFormMain.RadioGroupHyoujiClick(Sender: TObject); Hako.Hyouji := RadioGroupHyouji.ItemIndex = 0; {RadioGroupHyoujiClick} 1.14.3 if Hyouji // then Repaint; // {KomaWoKaku} if Hyouji // then Repaint; // {KomaWoKesu} 1.14.4 1.15 Memo 1.15.1 Memo Align Name Font.Name ScrollBars albottom MemoKai MS ssvertical

1. 16 1.15.2 Hako KaiWoKaku procedure THako.KaiWoKaku; { MemoKaki } I,J: Byte; Gyou: String; Jouhou: TJouhou; with FormMain.MemoKai do Lines.Append( +IntToStr(KaiNo)); for I := 1 to Tate do Gyou := ; for J := 1 to yoko do Jouhou := Masus[10*J+I]; if Jouhou <= 12 then Gyou := Gyou+Namae[Jouhou] else Gyou := Gyou+ ; Lines.Append(Gyou); Lines.Append( ); {KaiWoKaku} 1.15.3 Hako KaiHakken / procedure THako.KaiHakken; { } Inc(KaiNo); KaiWoKaku; case MessageDlg(IntToStr(KaiNo)+ +#13+#13+ +#13+#13+, mtconfirmation,[mbyes,mbno,mbabort],0) of mryes : Hyouji := True; mrno : Hyouji := False; mrabort : Tuzukeru := False; {KaiHakken} 1.15.4 ButtonJikkouClick procedure TFormMain.ButtonJikkouClick(Sender: TObject);

1. 17 MemoKai.Lines.Clear; // Hako.KaiNo := 0; Hako.Tuzukeru := True; Hako.Tansaku(1,[1..12]); {ButtonJikkouClick} 1.15.5 Button Name Caption ButtonSave OnClick procedure TFormMain.ButtonSaveClick(Sender: TObject); MemoKai.Lines.SaveToFile( PentominoKai.txt ); {ButtonSaveClick} 1.15.6 Y N A PentominoTansakuP.exe Pentomino.txt 1.16 10.15 6 10 6 5 2 12 5 6 5 2 2 2 8 8

1. 18 1.16.1 RadioGroupHako Columns 6 Items 6X5X2 8X8-4 1.16.2 THako No TNokori = set of TKomaNo; THakoNo = 1..6; // THako = class(timage) private Masus : array [TMasuNo] of TJouhou; No: THakoNo; // Tate,Yoko: Byte; 1.16.3 RadioGroupHakoClick procedure TFormMain.RadioGroupHakoClick(Sender: TObject); Hako.No := RadioGroupHako.ItemIndex+1; Hako.HakoWoKimeru; {RadioGroupHakoClick} 1.16.4 HakoWoKimeru procedure THako.HakoWoKimeru; I,J: Byte; case No of 1..4,6 : Tate := No+2; else Tate := 6; case No of 1..4 : Yoko := 60 div Tate; 6 : Yoko := 8; else Yoko := 11; with Canvas do Top := 48; for I := 0 to 219 do Masus[I] := 13; for I := 1 to Tate do for J := 1 to Yoko do Masus[J*10+I] := 0; case No of 5 :

1. 19 // 6 5 13 6 : // 2 2 13 {HakoWoKimeru} 1.16.5 6 5 2 32 = 32