| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5003 人关注过本帖
标题:开一个帖子发布我现在在做的一个比较大的项目,顺便请各位帮帮忙完成
只看楼主 加入收藏
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
结帖率:92.31%
收藏
 问题点数:0 回复次数:21 
开一个帖子发布我现在在做的一个比较大的项目,顺便请各位帮帮忙完成
这次我给自己设定的项目比较大,想来不会像以前那样一个项目才一到两个问题,每个问题开个帖子不麻烦,现在我要做的项目是一个军棋游戏
光是现在做了5%就有好多问题了,于是专门开个新帖子,实时跟踪我的项目进程,有一些成果了就在这里发布,顺便在这里提出一些问题。
先把之前的一个帖子发布的一个问题连接传上来,尚未解决https://bbs.bccn.net/thread-473409-1-1.html关于通信的问题。大家看看能不能帮忙解决。
二楼开始放程序代码
搜索更多相关主题的帖子: 项目 通信 游戏 
2017-01-16 20:00
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
现在项目处于初始阶段,所以核心还没做出来,我先把现在做了5%不到的版本发上来,里面有两大问题:一个是一楼说的通信问题
还有一个是关于棋子之前互相连线的算法问题,我没想到如何做这个算法
我棋子是用按钮数组代替的,应为我计划以后移动棋子是按按钮之后出现菜单进行移动操作的。
军棋游戏 未完成.zip (487.87 KB)

不想下载的可以直接看下面的代码,不过不大完整。
程序代码:
Private Sub Timer1_Timer()
Form4.Show
Dim i As Integer
For i = 0 To 239
DoEvents

 On Error Resume Next
  Load 棋子(i)
   With 棋子(i)
  
   .Visible = True
   .Height = Form2.Height / (竖)
    .Width = Form2.Width / (横)
     .Left = Int(i Mod (横 / 2)) * (Form2.Width / (横 / 2)) '设置棋子所在位置
    .Top = Int(i / (横 / 2)) * (Form2.Height / (竖 / 2)) '这段算法还是不要尝试理解了吧,我折腾了半天乱试出来的,测试可行才用的
    Debug.Print .Left
    Debug.Print .Top
    End With
    Form4.Label1.Caption = "正在加载棋子" & i & "请稍等"
Next i
For i = 0 To 239 '理论上没有那么一点,我现在的算法大家可以运行看看结果非常的不如人意,最好是除了第4列的第4行,8行,以及第八列的4行,8行外,所有格子相邻的连线,这四个格子对角线也连线,大家有想法帮忙想想
 DoEvents

 On Error Resume Next
  Load Line1(i): Debug.Print i
   With Line1(i)
    .X1 = 棋子(i).Left + 棋子(i).Width / 2
    .Y1 = 棋子(i).Top + 棋子(i).Height / 2
    .X2 = 棋子(i + 1).Left + 棋子(i + 1).Width / 2
    .Y2 = 棋子(i + 1).Top + 棋子(i + 1).Height / 2
    .Visible = True
   
   End With
  Form4.Label1.Caption = "正在加载线条" & i & "请稍等"
Next i

Unload Form4
Timer1.Enabled = False
End Sub
代码的整理非常差,将就着看吧

[此贴子已经被作者于2017-1-16 20:04编辑过]


编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2017-01-16 20:03
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
想了一下2L的问题,想出来这段代码,可以完成横竖的线条连接,但是只能连接出去一根线,再要连接两根甚至四根线怎么办呢?
程序代码:
Dim w As Integer '再定义一个变量
    For w = 0 To 239 '这样的话需要运行240的平方次计算,速度会很慢,但是这是我能想出来的唯一方案
    DoEvents
    If ((Abs(棋子(w).Left - 棋子(i).Left) = 棋子(2).Left - 棋子(1).Left) And Abs(Abs(棋子(w).Top - 棋子(i).Top) = 0) Or ((Abs(棋子(w).Top - 棋子(i).Top) = 棋子(21).Top - 棋子(0).Top) And (Abs(棋子(w).Left - 棋子(i).Left) = 0))) Then
    '上面这一行长的不得了,大致就是检查是否符合规则
   
    .X1 = 棋子(i).Left + 棋子(i).Width / 2
    .Y1 = 棋子(i).Top + 棋子(i).Height / 2
    .X2 = 棋子(w).Left + 棋子(w).Width / 2
    .Y2 = 棋子(w).Top + 棋子(w).Height / 2
    .Visible = True
    End If
   Next w
   End With
  Form4.Label1.Caption = "正在加载线条" & i & "请稍等"
Next i

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2017-01-16 20:50
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
不知道军旗规则,数组设置好,连线就不是问题吧。我在c里写过一个求最短路径的递归代码,估计和那个差不多。
2017-01-16 20:55
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
回复 4楼 xzlxzlxzl
现在还不需要军棋的规则,规则我也是修改的,原版规则参考性不大。
关于这个线的代码,我这个代码只能连接出一条线,实际情况下需要连接出两条线,应该怎么做?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2017-01-16 21:41
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
是不是就是将棋子用横线、竖线、斜线连接?
在你工程上做了个,不知道是不是你要的效果(我要做这个,是不会用控件做的,会直接画)
下载压缩文件后,解压缩,打开工程直接运行即可。

图片附件: 游客没有浏览图片的权限,请 登录注册

军棋 未完成(xzl修改).zip (430.76 KB)
2017-01-17 16:36
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
回复 6楼 xzlxzlxzl
感谢,就是这个意思,我稍微修改一下就好了
另外再问一个问题,如果我想要把游戏做全屏,现在的方案是把窗体模式设置为0-None,最大化。但是这样的话用Ctrl+Tab切换出去以后,任务栏里面没有游戏程序图标,要想让图标显示出来怎么办呢?
除此之外发现一个BUG,你的代码我看了下,Load时用的是屏幕大小,这样的话,如果后台有一些全屏的程序,例如某些游戏(我是后台运行了“守望先锋”)时,会出现加载仅加载了一半大小。这涉及到了Screen.Height和Length在VB中抓取的原理,所以我不想多想了,还是决定用窗体模式0-None+最大化来做全屏效果。
觉得你的棋子加载代码比我的好多了,决定还是全部采用你的代码,稍微做一些修改。

[此贴子已经被作者于2017-1-17 17:25编辑过]


编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2017-01-17 17:09
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
使用影子窗口。就是建立一个无用窗口由none窗口加载,在无用窗口的active事件里写一句none窗口的setfocuse。我这样试验成功,就像none窗体在任务栏一样。
2017-01-17 17:51
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
回复 8楼 xzlxzlxzl
还能这样哇,真的没想到过,厉害

进度推进了2%左右,将现在的版本发上来,有空的话帮我看看是否需要简化,没空的话就不要下载了,这一次并没有问题,唯一问题依旧是1L的问题,正在继续写代码中……
军棋游戏-未完成.zip (546.01 KB)


今天写了一点代码,完成了棋子初始的着色模块,更新一下
军棋游戏-未完成.zip (546.69 KB)


[此贴子已经被作者于2017-1-18 12:51编辑过]


编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2017-01-17 19:59
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
今天又写了一点,更新一下,加入了棋子的部署模块。(Replace那段代码我真的是眼睛都要炸了)
军棋游戏-未完成.zip (548.37 KB)


[此贴子已经被作者于2017-1-18 18:48编辑过]


编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2017-01-18 18:10
快速回复:开一个帖子发布我现在在做的一个比较大的项目,顺便请各位帮帮忙完成
数据加载中...
 
   



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

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