铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 3056|回复: 3

[pascal复刻] 看代码还真吃力

[复制链接]
发表于 2011-6-10 23:43 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
本帖最后由 反对混合型 于 2011-6-11 07:44 编辑

原版第二条指令似乎是有BUG,虽然说显示的是减去物品,但是实际上测试游戏你可以发现一个问题,会这样显示
比如:
失去精气丸
数量: -5
当然我们希望的是没有负号,替换这个就好了,其实改了一点东西而已,全贴上方便其他跟我一样不怎么懂的使用


  1. //得到物品可显示数量, 数量为负显示失去物品
  2. procedure instruct_2(inum, amount: integer);
  3. var
  4.   i, x: integer;
  5.   word: widestring;
  6. begin
  7.   i := 0;
  8.   while (RItemList.Number >= 0) and (i < MAX_ITEM_AMOUNT) do
  9.   begin
  10.     if (RItemList.Number = inum) then
  11.     begin
  12.       RItemList.Amount := RItemList.Amount + amount;
  13.       if (RItemList.Amount < 0) and (amount >= 0) then
  14.         RItemList.Amount := 32767;
  15.       if (RItemList.Amount < 0) and (amount < 0) then
  16.         RItemList.Amount := 0;
  17.       break;
  18.     end;
  19.     i := i + 1;
  20.   end;
  21.   if RItemList.number < 0 then
  22.   begin
  23.     RItemList.Number := inum;
  24.     RItemList.Amount := amount;
  25.   end;

  26.   ReArrangeItem;

  27.   x := CENTER_X;
  28.   if where = 2 then
  29.     x := 190;

  30.   DrawRectangle(x - 75, 98, 145, 76, 0, colcolor(255), 30);
  31.   if amount >= 0 then
  32.     word := ' 得到物品'
  33.   else
  34.     word := ' 失去物品';
  35.   drawshadowtext(@word[1], x - 90, 100, colcolor($23), colcolor($21));
  36.   drawbig5shadowtext(@RItem[inum].Name, x - 90, 125, colcolor($7), colcolor($5));
  37.   word := ' 數量';
  38.   drawshadowtext(@word[1], x - 90, 150, colcolor($66), colcolor($64));
  39.   word := format(' %5d', [abs(amount)]);
  40.   drawengshadowtext(@word[1], x - 5, 150, colcolor($66), colcolor($64));
  41.   sdl_updaterect(screen, 0, 0, screen.w, screen.h);
  42.   waitanykey;
  43.   redraw;
  44.   sdl_updaterect(screen, 0, 0, screen.w, screen.h);

  45. end;
复制代码


【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2011-6-10 23:50 | 显示全部楼层
本帖最后由 反对混合型 于 2011-6-10 23:50 编辑

另外想改对话框的可以看这个参考
转载的
消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合。

1.最简单用法,不带图形

MessageBox(0,'不同意','提示',MB_OK);

MessageBox(0,'不同意','提示',MB_OKCANCEL );

2.警告对话框:

MessageBox(0,'密码不能为空,请务必输入密码','警告',MB_ICONEXCLAMATION);

3.提示信息对话框:

MessageBox(0,'密码不能为空,请务必输入密码','提示',MB_ICONASTERISK and MB_ICONINFORMATION);

4.复杂用法:

MessageBox(Handle, PChar('进程' + Listview1.Selected.caption +'不能被结束!'), PChar('提示'), MB_ICONEXCLAMATION);

附常用属性

系统默认图标,可在消息框上显示
X错误 MB_ICONHAND, MB_ICONSTOP, and MB_ICONERROR
?询问 MB_ICONQUESTION
!警告 MB_ICONEXCLAMATION and MB_ICONWARNING
i信息 MB_ICONASTERISK and MB_ICONINFORMATION

按钮的形式
MB_OK   默认
MB_OKCANCEL 确定取消
MB_YESNO 是否
MB_YESNOCANCEL 是否取消

返回值
IDCANCEL 取消被选
IDNO 否被选
IDOK 确定被选
IDYES 是被选

补充:
以上消息框的用法是在Delphi中的应用,如果不是,则要MessageBox(NULL,"ddd","ddd",MB_OK);   或MessageBox(hWnd,"ddd","ddd",MB_OK); hWnd为某窗口的句柄,或者直接用AfxMessageBox。


点评

用MESSAGEBOX。。。太软件了  发表于 2011-6-11 11:40
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-6-11 00:02 | 显示全部楼层
对话框这东西,不在游戏中出现最好~影响观感~
另外,加个abs()有那么痛苦么~
另另外,rearrangeitem你改了啥~

点评

高手呀,小弟新学PASCAL,问题多多,能加我QQ指点一下吗?13470232  发表于 2011-6-14 13:57
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2011-6-11 07:44 | 显示全部楼层
回复 3 # winson7891 的帖子

我要是有你的编程基础我还这样么

点评

我也是为了做MOD才开始学pascal的~  发表于 2011-6-11 15:27
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-12-22 13:13

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表