Delphi XE 开发IOS

本文介绍如何使用 Delphi XE2 开发一款简单的 iOS 井字棋游戏,涉及 Firemonkey 库的应用、游戏逻辑实现以及跨平台部署等关键技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求

这个 demo 的要求:

  • Embarcadero Delphi XE2的试用版 (差不多占用了所花费总时间的42%来填写表格,然后再获取工具)
  • Mac Lion 10.2+ 从AppStore免费获取XCode 
  • 一台越狱过的IPhone用来检验实际设备上的效果 (或者有一个开发者证书可用于签名)
  • 简单的程序 - 这是演示的是简化的3x3格的井字棋游戏.

 

为了开发一个 IOS 应用程序 - 你不得不 选择特别的 项目类型“ Firemonkey HD

IOS 应用程序“。接下来 我们 看到一个典型的 Delphi项目 被建立:一个 看起来很I Phone的项目

 

代码实现  

是时候开始编写游戏代码了。这类游戏典型的解决方案都会使用 MiniMax 决策(http://en.wikipedia.org/wiki/Minimax)。 我将摘要复制了过来:

Minimax (有时候也叫 minmax)是一个在最坏情况下尽量减少损失的决策规则,常用于决策理论,游戏理论,统计学及哲学中。从另一方面来说,也可以想象成尽量增加小量的收获(maximin)。

极大极小定理状态

对于两个人,总收益固定,策略有限的游戏,对每个玩家都存在一个变量V和一个混合策略,使得:

  1. 相对玩家二的策略,玩家一的最佳收益是V,且
  2. 相对于玩家一的策略,玩家二的最佳收益是 -V。

也可以说,无论玩家二的策略如何,玩家一的策略都可以保证他的回报为V。类似地,玩家二可以保证回报为 -V。极大极小定理的名称来源于,每个玩家都希望极大地使用对方获得极小的回报——既然总收益固定,他同时也极大地减少自己的损失(得到最大的收益)。

下面我们将用 Delphi 来在3*3的棋盘上实现Go游戏中的这个算法(代码托管在 github  上面,你可以点击本文结尾中的链接下载)。

游戏的实现类很简单

TGameXOImpl = class
  private
    MovePatterns: array[0..4] of TXOPoint;
     //matched to external X/O/' '  layout button texts
    GamePane: array[0..2,0..2] of char;
    Moves: array[0..2,0..2] of byte;

    SignComputer: char;
    SignPlayer: char;
  protected
    procedure ResetGamePane();
    function AnalyzeTurn (Computer: Boolean; Step: Integer): Integer;
  public
    constructor Create();
    function ComputerTurn():TXOPoint;
    function CheckGameIsCompleted(Mark: Char):integer;
    procedure StartGame(PlayerSign: char);
    function PlayTurn(Turn:TXOPoint):integer;

    property ComputerSign : char read SignComputer ;
    property PlayerSign : char read SignPlayer;

end;


 

开局

MovePatterns[0] := TXOPoint.Create(0,0); 
MovePatterns[1] := TXOPoint.Create(0,2); 
MovePatterns[2] := TXOPoint.Create(1,1); 
MovePatterns[3] := TXOPoint.Create(2,2);


 

极大极小策略

{ TGameXOImpl }
 
(**
*   @Mark char X|O check win criteria for passed mark
*
*   return  -1 game in progress,  0 - nobody won, 1 - passed mark has won
*)
function TGameXOImpl.AnalyzeTurn(Computer: Boolean; Step: Integer): Integer;
var i, j, checkturn, weight, max: Integer;
begin
  max := -1;
  for i := 0 to 2 do
    for j := 0 to 2 do
    begin
      weight := -2;
      if GamePane[i,j] = ' ' then
      begin
        if Computer then begin
          GamePane[i,j] := self.SignComputer;
        end else begin
         GamePane[i,j] := self.SignPlayer;
        end;
 
        if Computer then checkturn := CheckGameIsCompleted(self.SignComputer)
                    else checkturn := CheckGameIsCompleted (self.SignPlayer);
        if (checkturn < 0) then begin
          weight := - AnalyzeTurn(not Computer, Step + 1);
        end else begin
          weight := checkturn;
        end;
        if (weight > Max) then begin
          max := weight;
        end;
        GamePane[i,j] := ' ';
 
        if ((max = 1) and (step > 0)) then
        begin
          Result := Max;
          break;
        end;
      end;
      if (Step = 0) then Moves[i,j] := weight;
    end;
  Result := Max;
end;


 

测试游戏

我们来测试一下吧(推荐直接编译运行,或者使用编译好的程序来运行):

  

你可以直接编译本程序,也可以参考这里的图像: (4_2game.jpg 到4_7game.jpg)

导出到 Mac 系统

现在我们可以测试游戏了,但是仅限于 windows 平台。为了将项目移植到 Mac平台上的XCode,我们需要使用配套的  dpr2xcode工具。需要先进行配置,然后导出,如下图所示:

  

  

  

导出完成之后,你可以看到一个新建的 'XCode' 目录,你可以在 Mac 上使用 XCode 直接打开这个项目。

  

  

不幸的是,这个工具并不是很稳定,容易出错:

 

我花了 20 多分钟,利用 SysInternals Filemon 工具来试图找出问题所在。

我在 Mac 上试图编译时遇到问题:XCode 中的 TPoint 实现并没有接收两个参数(x,y)的构造函数。我只好自己写了个实现 TXOPoint。Delphi XE2 花了我 3000 美元,难道不应该提醒一下移植过程中可能出现的问题吗?!还好,实现了 TXOPoint 之后,我很顺利地在模拟器中运行了这个游戏。

  

  

  

为了部署你的程序到真实的IOS机器上,你需要一个开发者证书(每年100美元以上)。

如果你的 iPhone 越狱了,那么你可以用 7zip 来创建可以安装的 ipa 包。你只需要使用另一个可以正常安装的 ipa 包,将你的项目内容替换到 Payload 目录就可以了。(当然,你需要在 XCode 项目选项里面设置运行所需的最低IOS版本)。
完成之后,我们就可以在 iPhone 上面看到我们的程序:

  

  

 

 

原文链接:http://www.codeproject.com/Articles/505996/Going-mobile-development-with-Delphi

译文链接:http://www.oschina.net/translate/going-mobile-development-with-delphi

目录 XE6移动开发环境搭建之IOS篇(1):准备安装材料(有图有真相) 2 XE6移动开发环境搭建之IOS篇(2):安装VM9虚拟机(有图有真相) 10 XE6移动开发环境搭建之IOS篇(3):配置虚拟机,设置Mac安装环境(有图有真相) 27 XE6移动开发环境搭建之IOS篇(4):VMware9里安装Mac OSX 10.8(有图有真相) 52 XE6移动开发环境搭建之IOS篇(5):解决Windows和虚拟机下Mac OSX的共享问题(有图有真相) 85 苹果MAC系统下访问Windows共享文件 94 XE6移动开发环境搭建之IOS篇(6):设置Mac OSX的网络。(有图有真相) 99 XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装Xcode4.6.3(有图有真相) 107 备份及还原Xcode的模拟器 135 Xcode模拟器simulators8,7,6,5下载地址及安装 138 XE6移动开发环境搭建之IOS篇(8):在Mac OSX 10.8中安装XE6的PAServer(有图有真相) 149 XE6移动开发环境搭建之IOS篇(9):配置XE6的IOS SDK(有图有真相) 165 XE6 & IOS开发之免证书真机调试(1):颁发属于自己的App签名证书(有图有真相) 198 XE6 & IOS开发之免证书真机调试(2):连接真机并运行App(有图有真相) 235 XE6 & IOS开发之免证书真机调试(3):生成iPA文件并安装到其它苹果设备上(有图有真相) 271 XE6 & IOS开发开发者账号、苹果证书(1):关于开发者账号 299 XE6 & IOS开发开发者账号、苹果证书(2):关于苹果证书 302 XE6 & IOS开发开发者账号、苹果证书(3):关于在XE6中使用苹果证书的简单介绍 306 XE7 & IOS开发开发账号(1):开发证书、AppID、设备、开发授权profile的申请使用,附Debug真机调试演示(XCode所有版本通用,有图有真相) 323 XE7 & IOS开发开发账号(2):发布证书、发布授权profile的申请使用,附Ad hoc真机调试、生成ipa文件演示(XCode所有版本通用,有图有真相) 424 XE7 & IOS开发开发账号(3):证书、AppID、设备、授权profile的申请使用,附Debug真机调试、Ad hoc下iPA文件生成演示(XCode5或以上版本推荐,有图有真相) 493 XE8 & IOS开发之免费证书真机调试:开发证书、AppID、开发授权profile的申请,附Debug真机调试演示(XCode7 Beta版或以上版本适用,有图有真相) 564 [IOS]从零开始搭建基于Xcode7的IOS开发环境和免开发者帐号真机调试运行第一个IOS程序HelloWorld 635
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值