如何将Delphi编写的程序转换成源码,详细点

如何将Delphi编写的程序转换成源码,详细点,第1张

概括介绍

MCGS组态软件是一款适用于windows平台,快速构造和生成上位机监控的工具,mcgs组态软件下载集现场采集、数据处理和控制设备等多种功能于一身,为客户提供全方位服务。

软件特色

免费:超强功能的无限点组态软件免费用

兼容:76软件向下兼容,支持全系列产品,兼容Win7-64位系统

低耗:应用于嵌入式计算机,仅占16M系统内存

通讯:支持串口、网口等多种通讯方式,支持MPI直连、PPI1875K

驱动:提供了常用800多种设备的驱动

报表:多种数据存盘方式,多样报表显示形式,满足不同现场需求

曲线:支持实时、历史、计划等多种曲线形式,同时历史曲线的显示性能提升了10倍

动画:可实现逼真的动画效果,同时支持JPG、BMP,满足对容量和画质的不同需求

配方:配方名称支持中文,任意读写,支持配方导入导出,在线 *** 作

下载:支持高速网络在线下载,支持U盘离线更新工程

安全:可设置工程密码、 *** 作权限密码、运行期限等安全机制

简化:新增公共窗口,去除双击功能,简化组态流程

开放:用户可以自己编写驱动程序、应用程序,支持个性化定制,内置打印机功能

稳定:优化启动属性,内置看门狗,易用,可在各种恶劣环境下长期稳定运行

功能:提供中断处理,定时扫描可达毫秒级,提供对mcgsTpc串口、内存、端口的访问

存储:高压缩比的数据压缩方式,保证数据完整性,铁电存储初值,100亿次以上擦写

MCGS组态软件组成

主控窗口:是工程的主窗口或主框架。在主控窗口中可以放置一个设备窗口和多个用户窗口,负责调度和管理这些窗口的打开或关闭。主要的组态 *** 作包括:定义工程的名称,编制工程菜单,设计封面图形,确定自动启动的窗口,设定动画刷新周期,指定数据库存盘文件名称及存盘时间等。

设备窗口:是连接和驱动外部设备的工作环境。在本窗口内配置数据采集与控制输出设备,注册设备驱动程序,定义连接与驱动设备用的数据变量。

用户窗口:本窗口主要用于设置工程中人机交互的界面,诸如:生成各种动画显示画面、报警输出、数据与曲线图表等。

实时数据库:是工程各个部分的数据交换与处理中心,它将MCGS工程的各个部分连接成有机的整体。在本窗口内定义不同类型和名称的变量,作为数据采集、处理、输出控制、动画连接及设备驱动的对象。

运行策略:本窗口主要完成工程运行流程的控制。包括编写控制程序(ifthen脚本程序),选用各种功能构件,如:数据提取、定时器、配方 *** 作、多媒体输出等。

哈哈,这个我正好做了一个五子棋程序。已经实现了,不过只可以自己和自己下。但是求获胜算法没问题。

{

标题:五子棋

修改日期:2008113

作者: xlxchy

用途: 学习

备注:本五子棋实现主要算法:定义一个和棋盘同大小的二维数组,初始值都为12,每一个元素对应

棋盘上的一个可下棋子的位置[下称“标准点”];下棋时,每在棋盘上点下一个棋子,如果是

黑子,则对应的标准点的元素变2;如果是白子则变为1。每下一颗棋子,扫描二维数组,如果

有X向、Y向、XY向连续的五个元素和为10,则黑子赢;如果和为5,则为白子赢;否则继续;

待改进点:扫描棋盘二维数组时可考虑不必全盘扫描,只需要扫描下棋点周围一定范围[99]的元素和即可。

}

unit Chess;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, ImgList, Menus, StdCtrls, Buttons, ComCtrls, XPMenu;

type

TForm1 = class(TForm)

ImageList1: TImageList;

Image1: TImage;

Image2: TImage;

PopupMenu1: TPopupMenu;

Exit1: TMenuItem;

SpeedButton1: TSpeedButton;

Timer1: TTimer;

StatusBar1: TStatusBar;

SpeedButton2: TSpeedButton;

SpeedButton3: TSpeedButton;

Bevel1: TBevel;

Edit1: TEdit;

Bevel2: TBevel;

XPMenu1: TXPMenu;

Label1: TLabel;

procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormCreate(Sender: TObject);

procedure Exit1Click(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

procedure SpeedButton3Click(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

ChessFlag :integer;//棋子黑白标志,0,1[为0时标志黑子,为1时标志白子]

ChessArray : array [018] of array [018] of integer;{棋盘标准点记录二维数组,初始值全为12,

当下一个黑子对应标准点数组元素变为2

当下一个白子对应标准点数组元素变为1 }

Hour,Minute,Second:integer; //计时器变量 时:分:秒

implementation

{$R dfm}

procedure TForm1Image1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var

ChessPic:TPicture; //棋盘

i,j:integer;

Modx,Mody :integer;

Divx,Divy :integer;

Flagx,Flagy :Boolean; //点击棋盘位置判断标志;

VictorCountx,victorCounty,VictorCountxy :integer; //胜负判断计数,为10时黑子胜利,为5时白子胜利,

begin

Flagx := False;

Flagy := False; //棋盘标准点标志初始值;

Modx := x mod 27;

Mody := y mod 27; //鼠标点击位置离标准点的距离;

Divx := x div 27;

Divy := y div 27; //鼠标点击位置是棋盘上第几个标准点;

//规格化X坐标 将标准点X轴正反向7个像素点的位置规格化为标准点;

if Modx > 20 then

begin

Divx := Divx + 1;

x := 27 Divx;

Flagx := True; //X坐标已规格化

end

else if Modx < 7 then

begin

x := 27 Divx;

Flagx := True; //X坐标已规格化

end;

//规格化Y坐标 将标准点Y轴正反向7个像素点的位置规格化为标准点

if Mody > 20 then

begin

Divy := Divy + 1;

y := 27 Divy;

Flagy := True; //Y坐标已规格化

end

else if Mody < 7 then

begin

y := 27 Divy;

Flagy := True; //Y坐标已规格化

end;

if (Flagx and Flagy) and (ChessArray[Divx][Divy] = 12) then //如果X Y 坐标都已规格化

begin

ChessPic := TPictureCreate; //创建图象;

if ChessFlag = 0 then

begin

ChessPicLoadFromFile('blackico');//装载黑棋子

ChessArray[Divx][Divy] := 2; //修改二维数组的对应元素值

ChessFlag := 1; //棋子标志转换;

end

else

begin

ChessPicLoadFromFile('whiteico'); //装载白棋子

ChessArray[Divx][Divy] := 1; //修改二维数组的对应元素值

ChessFlag:=0; //棋子标志转换;

end;

image1canvasDraw(x-14,y-14,ChessPicGraphic);//输出棋子;

for i := 0 to 18 do

for j := 0 to 18 do

begin

Image1CanvasFontSize := 28;

Image1CanvasFontColor := clred;

//行上的连续五个棋子和;

VictorCountx := ChessArray[i][j]+ChessArray[i+1][j]+ChessArray[i+2][j]+ChessArray[i+3][j]+ChessArray[i+4][j];

//列上的连续五个棋子和

VictorCounty := ChessArray[i][j]+ChessArray[i][j+1]+ChessArray[i][j+2]+ChessArray[i][j+3]+ChessArray[i][j+4];

//行上连续五个同色棋子判断;

case VictorCountx of

10 :begin

Image1CanvasTextOut(200,230,'黑子赢!');

Image1Enabled := False;

Timer1Enabled := False;//计时停止

break;

end;

5 : begin

Image1CanvasTextOut(200,230,'白子赢!');

Image1Enabled := False;

Timer1Enabled := False;//计时停止

break;

end;

end; //end [case]

//列上连续五个同色棋子判断;

case VictorCounty of

10 :begin

Image1CanvasTextOut(200,230,'黑子赢!');

Image1Enabled := False;

Timer1Enabled := False;//计时停止

break;

end;

5 : begin

Image1CanvasTextOut(200,230,'白子赢!');

Image1Enabled := False;

Timer1Enabled := False; //计时停止

break;

end;

end; //end [case]

//斜线上连续五个同色棋子判断;

VictorCountxy := ChessArray[i][j]+ChessArray[i+1][j+1]+ChessArray[i+2][j+2]+ChessArray[i+3][j+3]+ChessArray[i+4][j+4];

case VictorCountxy of

10 :begin

Image1CanvasTextOut(200,230,'黑子赢!');

Image1Enabled := False;

Timer1Enabled := False; //计时停止

break;

end;

5 : begin

Image1CanvasTextOut(200,230,'白子赢!');

Image1Enabled := False;

Timer1Enabled := False; //计时停止

break;

end;

end; //end [case]

VictorCountxy := ChessArray[i][j]+ChessArray[i+1][j-1]+ChessArray[i+2][j-2]+ChessArray[i+3][j-3]+ChessArray[i+4][j-4];

case VictorCountxy of

10 :begin

Image1CanvasTextOut(200,230,'黑子赢!');

Image1Enabled := False;

Timer1Enabled := False;//计时停止

// showmessage('The victor is Black!');

break;

end;

5 : begin

Image1CanvasTextOut(200,230,'白子赢!');

Image1Enabled := False;

Timer1Enabled := False; //计时停止

// Showmessage('The Victor is White!');

break;

end;

end; //end [case]

end;//end [for]

end;

end;

procedure TForm1FormCreate(Sender: TObject);

var

i,j :integer;

begin

ChessFlag:=0; //棋子判断标志,初始标志为0[黑子]

//二维数组赋初值;值为12;

for i := 0 to 18 do

for j := 0 to 18 do

ChessArray[i][j] := 12;

//计时器初始化

Second := -1;

Minute := 0;

Hour := 0;

end;

procedure TForm1Exit1Click(Sender: TObject);

begin

ApplicationTerminate;

end;

procedure TForm1SpeedButton1Click(Sender: TObject);//重新开始

var

i,j :integer;

begin

// 计时器初始化

Second := -1;

Minute := 0;

Hour := 0;

//启动计时器

Timer1Enabled := True;

ChessFlag := 0; //棋子初始标志,初始化为0[黑子]

Image1Enabled := True; // 棋盘恢复可用;

image1PictureLoadFromFile('boardbmp');//重新装载图象以清楚棋盘上的棋子;

for i := 0 to 18 do

for j := 0 to 18 do

ChessArray[i][j] := 12; //二维数组赋初值;

end;

procedure TForm1SpeedButton3Click(Sender: TObject);

begin

ApplicationTerminate;

end;

procedure TForm1SpeedButton2Click(Sender: TObject);

begin

Image1Visible := True;

Edit1Enabled := True;

Timer1Enabled := True;

end;

//计时器

procedure TForm1Timer1Timer(Sender: TObject);

var

TimeStr :String;

begin

TimeStr := '';

Second := Second + 1;

if Second = 60 then

begin

Second := 0;

Minute := Minute + 1;

end;

if Minute = 60 then

begin

Minute := 0;

Hour := Hour + 1;

end;

if Hour = 60 then

begin

Second := 0;

Minute := 0;

Hour := 0;

end;

if Second < 10 then

TimeStr := '0' + inttostr(Second)

else

TimeStr := inttostr(Second);

if Minute <10 then

TimeStr := '0' + inttostr(Minute) + ':' + TimeStr

else

TimeStr := inttostr(Minute) + ':' + TimeStr;

if Hour < 10 then

TimeStr := '0' + inttostr(Hour) + ':' + TimeStr

else

TimeStr := inttostr(Hour) + ':' + TimeStr;

Edit1Text := TimeStr;

end;

end

以上就是关于如何将Delphi编写的程序转换成源码,详细点全部的内容,包括:如何将Delphi编写的程序转换成源码,详细点、用delphi编写五子棋程序时判断一方获胜的代码、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10091462.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存