• Print
  • English

ºô¯¸¤º®e

  • ²Õ´¬[ºc
  • ªñ´Á¬¡°Ê
  • ·|Äy¥Ó½Ð
  • ¤g²£¦Û¥Ñ³n¥ó±À¤¶
  • ¥»·|Ápµ¸¸ê®Æ
  • ºô¯¸³ø®Æ
  • ºëµØºô¯¸±À¤¶
  • ¹q¤l°Å³ø
  • English Version

¬ÛÃö³sµ²

  • Macau ICT Awards
  • ¿Dªù¹q¸£¾Ç·|½×¾Â
  • CEO½×¾Â

¨ä¥L³sµ²

  • ³n¥ó¬ì§Þ¬ã¨s©Ò
  • ­»´ä¹q¸£¾Ç·|
  • ¤¬Ápºô±M·~¤H­û¨ó·|
  • ±Ð¨|º[«C¦~§½
  • ¥Í²£¤Oº[¬ì§ÞÂಾ¤¤¤ß
  • ¿Dªù¤é³ø

¨Ï¥ÎªÌ

  • µn¤J

Powered By

AI-code ¤¤¨Ï¥Î FreePascal ªº¤èªk

µêÀÀ¾÷±ñ¤H¨¬²y¤ñÁɩұĥΪº¤ñÁɨt²Î AI-Code ¤¤, ¥Ø«e¥u¤ä´©¨ä¥»¨­ªº¹Ï§Îµ{¦¡¤¶­±¤ÎC++¨âºØ½sµ{¤èªk¡C ¹ï©ó³¡¥÷¨S¦³¾Ç C ªº¾Ç¥Í¥i¯à·|³y¦¨¤@©wªº§xÃø¡C¦Ó¥»¤H¸g¤ÀªR¸Ó¨t²Î«á, µoı­n§â¥¦ÂX®i¨Ï¥Î¨ä¥L»y¨¥, ¹ê¦b¥ç¤£¬OÃø¹ê, ¥H¤U¬O§Ú±N¥¦ÂX®i¨Ï¥Î FreePascal ªº¨Ò¤l, ¤j®a¥i¥H°Ñ¦Ò°Ñ¦Ò¡C

FreePascal ÂX®i

²³æ¨Ó»¡, °µªk¬O¥Î FreePascal ¨Ó«Ø¥ß¤@­Ó object ÀÉ, ¦Ó¥D­nªºµ{¦¡³£¦b³o object Àɤº, ³o­Ó±¡ªp¤U, §Ú­ÌÁÙ¬O»Ý­n¤@­Ó C++ ªºÀÉ®×, ¸ÓÀɮװߤ@ªº§@¥Î¥u¬O©I¥s Pascal ªºµ{¦¡, ¹ê»Ú¤W¥u¬O­Ó´ß¡C¥H¤U¬O¨t²Îªº§ï¸Ë¤Î FreePascal µ{¦¡ªº½s¼g¤èªk¡C

½s͍t²Îªº¥[¤u

¬°¤F¨Ï¾ã­Ó½s͹Lµ{¥i¥H¸û¦Û°Ê¤Æ, §Ú³s FreePascal ªº½sͳ¡¥÷³£¥[¶i­ì¨Óªº¨t²Î¤º, ³o¶µ¤u§@¥u»Ý­n­×§ï¤@­Ó bat ÀÉ´N¥i¥H, ³o­ÓÀɬO AI-RCJ 4.0\Enternal Tools\pasoft\rcj\virtual\compile.bat

¥H¤U¬O¸g­×§ï«áªºcompile.batÀÉ¡C§Ú¦P®É¥ç±N³¡¥÷­ì¬°Â²Å骺¤¤¤å°T®§§ï¬°ÁcÅé¡C ­×§ï«áªº³o­Óª©¥»µL½×§A¬O§_¨Ï¥Î FreePascal ³£¥i¥H¨Ï¥Î¥¦¡C

echo ¥¿¦b½sĶ  %1\%2.c

set GCC=%cd%\..\..\gcc
set path=%path%;%GCC%\bin

rem ¥H¤U½Ð´«¤W§A¹q¸£¤º ppc386 (©Î fpc) ªº°õ¦æ¸ô®|
set FPC=C:\pp\bin\win32\ppc386

set ROBOEXP_ROOT=%cd%\..\..\..\..
set SOURCE_PATH=%1
cd .\..
set AIRCJ=runtime
set SOURCE_FILE=%1\%2.c

rem ----------------------------------
rem Àˬd¬O§_¦³ pascal ªºÀɮצí¦b
if not exist %1\%2.pas goto compliegcc
set SOURCE_FILE=%SOURCE_FILE% %2.o
copy /y %1\%2.pas .
FPC %2.pas
set errorl=%errorlevel%
del %2.pas

if not %errorl%==0 goto error
rem ----------------------------------

:compilegcc
g++ -shared -o %1\%2.dll -I"%ROBOEXP_ROOT%\Robots\RCJ\Include" -I%1 -I"%AIRCJ%\c\include" -I"%AIRCJ%\c\src\roboexp\virtual" %SOURCE_FILE% %AIRCJ%\c\src\roboexp\virtual\*.c "%AIRCJ%\c\lib\airobot_c.a"

if not %errorlevel%==0 goto error
echo ½sͦ¨¥\
goto end

:error
echo ½s͹Lµ{¥X²{¿ù»~  ½ÐÀˬdµ{¦¡

:end
[Get Code]

½s¼gµ{¦¡

½s¼gµ{¦¡³£¥÷³£­n½s¼g¨â­Óµ{¦¡, ¤@­Ó¬OªÅ´ßªº C++ µ{¦¡, ³o­Óµ{¦¡¥i¥H¥Î¾÷±ñ¤H§Ö¨®ªº¨t²Î¨Ó²£¥Í, ¨ä¤º®e¦p¤U¡C¥¦°ß¤@ªº§@¥Î´N¬O¥Î©I¥s§A¥Î Pascal ¼gªºµ{¦¡, ¨ä¤¤ RobotMain ´N¬O§A¦b Pascal ¤º©Ò½s¼gªº¥D¨ç¼Æ, ·íµM§A¥i¥H¨Ï¥Î¨ä¥L¥ô¦ó¦W¦r³£¥i¥H¡C

extern  "C" void RobotMain();

int main(void)
{
  RobotMain();
}
[Get Code]

²Ä¤G­Óµ{¦¡´N¬O FreePascal µ{¦¡¡C³oùØ, §Ú¥H¨t²Î­ì¦³´£¨Ñªº shooter §@¬°¨Ò¤l, ±N¥¦¼g¦¨ Pascal, ¨Ñ¤j®a°Ñ¦Ò¡C

unit shooter;

interface

procedure RobotMain; cdecl;

implementation

function GetAttack: longint; cdecl; external;
function GetCourtWidth: double; cdecl; external;
function GetCourtHeight: double; cdecl; external;
procedure SetKickBallTo(x, y: double); cdecl; external;

procedure Robot; cdecl;
var
  goalx, goaly, width, height: double;
  attack: longint;
begin
  attack := GetAttack;
  width := GetCourtWidth;
  height := GetCourtHeight;
  goaly := height/2;
  if (attack > 0) then
    goalx := width
  else
    goalx := 0;

  while (true) do begin
    SetKickBallTo(goalx, goaly);
  end;
end;

begin
end.
[Get Code]

½s¼g³o­Óµ{¦¡®É­nª`·N¥H¤U

  1. ³o­Óµ{¦¡À³©ñ¦b»P§A C++ ¾÷±ñ¤Hµ{¦¡¬Û¦Pªº¨º­Ó¥Ø¿ý¤º, ¨Ã¥BÀɮתº¥D¦W­n¬Û¦P
  2. ©Ò¦³¥~³¡µ{¦¡¤Î±N·|³Q C++ ©I¥sªº¤lµ{¦¡³£­n¥[¤W cdecl¡C·N«ä¬O¨Ï¸Ó¤lµ{¦¡«ö·Ó C ªº©I¥sºD¨Ò°õ¦æ
  3. ¦binterface ³¡¥÷³Ì¥D­n¬O´£¨Ñµ¹ C++ ªº©I¥s¤lµ{¦¡
  4. µ{¦¡¤¤§A¤£¯à¨Ï¥Î¥ô¦ó Pascal ªº¤º«Ø function ©M procedure (¦p: read, write µ¥), ¤£¹L, ¼Æ¾Ç¨ç¼Æ¦p sin, cos µ¥¥i¥H·Ó¥Î!
  5. ¦b implementation ªº¤@°ï external ©w¸q, ¬O¾÷±ñ¤H§Ö¨®©Ò´£¨Ñªº C++ ¨ç¼Æ, ³o³¡¥÷¨Ï Pascal ¥i¥H¨Ï¥Î C ªº¨ç¼Æ,·íµM, ¦pªG»Ý­nªº¸Ü, §A¥ç¥i¨Ï¥Î¨Ï¥¦¼Ð·Çªº C++ ¨ç¼Æ

½s¼g Pascal µ{¦¡®É§A»Ý­n¦Û¦æ¨Ï¥Î¨ä¥L¤å¦r½s¿è¾¹ (¦p: vim), ¦ý½s¼g§¹¤§«á§A´N¥i¥H¥Î¨t²Îªº¾÷±ñ¤H§Ö¨®ª½±µ¶i¦æ½sͤu§@¡C

  • Print
  • English
Page last modified on March 26, 2008, at 05:47 AM