| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4229 人关注过本帖, 2 人收藏
标题:求助!!!
取消只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 113楼 beyondyf
是啊 我制作的过程中是老提示 可能丢失像素 WINDOWS自带的画图 PS ACDSee ArtIcon 我都试着用了 不太会搞高清晰的裁剪美观的棋子啊
你说的那个BUG 其实是程序故意设置的 让人直观起点位置。只要删除一句画选择框的语句就成了。

梅尚程荀
马谭杨奚







                                                       
2012-05-17 21:46
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
杨大哥 如果让你设计中国象棋的数据结构 你会怎么选择

一维数组? 多长 static (what TYPE?) Name[what size?];
二维数组 static (what TYPE?) Name[what size?][what size];
或者用传说中的位棋盘?


梅尚程荀
马谭杨奚







                                                       
2012-05-17 21:51
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
我就是用的他给的那套图 但当时对界面处理有些不太懂
你看下我的部分代码
程序代码:
// Draw On the lattice 根据具体消息在格子上画图
static void DrawLattice(int cPos, BOOL select)
{
    int PosTurn, cx, cy, ChessmanID;

    PosTurn = WV.bTurn ? LatticeTurn(cPos) : cPos;
    cx = BoardEdge + (GetX(PosTurn) - 3) * LatticeSize;
    cy = BoardEdge + (GetY(PosTurn) - 3) * LatticeSize;

    SelectObject(WV.hdcTemp, WV.hbmpBoard);
    BitBlt(WV.hdcMain, cx, cy, LatticeSize, LatticeSize, WV.hdcTemp, cx, cy, SRCCOPY);

    ChessmanID = State.Chessman[cPos];
    if (ChessmanID != 0)
        DrawTransMap(WV.hdcMain, WV.hdcTemp, cx, cy, WV.hbmpChessman[ChessmanID]);
    if (select != 0)
        DrawTransMap(WV.hdcMain, WV.hdcTemp, cx, cy, WV.hbmpSelected);
}

-------  
程序代码:
  case WM_CREATE:
    GetWindowRect(hWnd, &rect);
    x = rect.left;
    y = rect.top;
    rect.right = rect.left + BoardWidth;
    rect.bottom = rect.top + BoardHeight ;
    AdjustWindowRect(&rect, WINDOW_STYLES, TRUE);
    MoveWindow(hWnd, x, y, rect.right - rect.left, rect.bottom - rect.top, TRUE);
    break; 


-----
程序代码:
#define WINDOW_STYLES  WS_OVERLAPPEDWINDOW | WS_SYSMENU | WS_CAPTION
const int  LatticeSize = 52;
const int  BoardEdge = 4;
const int  BoardWidth = 2 * BoardEdge + 9 * LatticeSize;
const int  BoardHeight = 2 * BoardEdge + 10 * LatticeSize;

他的棋子是 51 * 53 的 棋盘当时是多少忘了 我当时设置LatticeSize是60后来才慢慢的调整 但是老是对不上格子 我就去把每个棋子都改成 52 * 52的了 在把棋盘改成和52对应的尺寸 。其中就提示过失真的现象。
话说棋格的大小应该可以是长方形把 开始去做的时候很多不晓得呢 现在才稍微熟悉点点 然后图片都改了 我就将就着用了 现在把精力转到走法生成上面了 数据结构和算法分析和有味道啊


梅尚程荀
马谭杨奚







                                                       
2012-05-17 22:11
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 118楼 beyondyf
嗯 这样设计确实便于宏观把握

我现在专注于走法生成即行棋规则
2、获取当前行棋方、完成将一个位置的棋子移动到另一个位置(其中设置行棋规则,通过返回值通知调用者是否可以这样行棋);

--
这个也应该与一个数据结构有关联把 比如一维数组表示的棋盘和二维数组表示的棋盘处理 或者 不同的数组大小(即有无边框, 边框占几个单位)对行棋规则的代码实施都是有很大影响的吧  用面向对象的方法能规避这个限制吗?

[ 本帖最后由 有容就大 于 2012-5-17 22:28 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-05-17 22:27
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
杨大哥 顺带向你要本书不知道有电子版的没 我自己去网上看都没找到
蒋鹏的
《C/C++中国象棋程序入门与提高》

梅尚程荀
马谭杨奚







                                                       
2012-05-17 22:40
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 120楼 beyondyf
如果为了应付了事 我也不会声嘶力竭的喊大家一起来盖高楼了 说实话盖了这么多高楼 怕坛友们笑话我或者鄙视我

我会认真看你给的代码的 如果不懂就向你请教 如果讲的口干舌燥我还像木头一样没反应 只能怪自己笨没资质了  请你喝茶先。

梅尚程荀
马谭杨奚







                                                       
2012-05-17 22:45
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 123楼 beyondyf
我也睡了 晚安

梅尚程荀
马谭杨奚







                                                       
2012-05-17 22:45
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 126楼 hellovfp
这么讲就明白了许多 现在我有个问题是 比如我在PS里新建一张图 然后经过一系列操作(添加图层 上蒙版 合并图层)的到一个新的图片, 这个图片应该是对应一系列图层吧 然后我的想法就是把这个图层状态保存起来 如果下次要用就直接加载 , 比如我做象棋棋子‘炮’ 做到写文字之前的那一步 然后采取个什么手段 把这个状态(包含了前面的所有步骤)保存起来 这样我下次再做‘车’的时候就直接加载这个图层, 就能得到一副背景相同的棋子。
我试了下在这个节骨眼上保存 图片 然后在做下一个棋子时 打开这个保存好的图片文件 但是得到的是个背景图 (单张图片)不在拥有做炮时产生的图层, 怎么办?

[ 本帖最后由 有容就大 于 2012-5-18 11:46 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-05-18 11:44
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 129楼 hellovfp
哈哈 谢谢

梅尚程荀
马谭杨奚







                                                       
2012-05-18 12:34
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 128楼 hellovfp
哇 卡卡 糗大了 。我是即学即看。

梅尚程荀
马谭杨奚







                                                       
2012-05-18 12:35
快速回复:求助!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019026 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved