当前位置:编程学习 > C#/ASP.NET >>

做课程设计-大海战游戏的问题

小弟今年大三,这学期碰上要做课程设计了,之前只学过C++,和一部分C的练习,编程水平比较菜。这次课程设计是和其他同学合作的,需要用C#,平时课业繁忙,还没多少时间专门学习C#的。现在做这个大海战游戏碰到了不少问题,来寻求思路。

首先说一下题目要求:敌我双方各有16*16格的“海域”可以排布战舰,地方战舰排布不可见,先击毁对方所有战舰者胜。敌方是电脑随机排布,随机攻击的。船有好几种,有5*1格大小的,有2*1格大小的等等。

这里不方便发图,就说一下我现在的做法吧。双方海域各放了256*256大小的panel控件,用drawline函数以16*16的大小分割出了256个格子。因为是用drawline函数画的分割线,所以运行程序的时候才会显示。现在碰到一大问题就是在自己海域排布战舰时,无法获取鼠标点击的位置,我网上搜了不少东西,尝试着用panel控件的MouseDown事件来做,代码编译通过,但无实际效果,对着panel控件点击,没有响应。可以想见后续还会有不少问题。我就来这儿求助啦,大虾们帮我看看我的思路是否可行,还是用其它方法做更简单?(之前想过用picturebox来作为海域中的一个个格子,但是512个picturebox控件,光载入就有明显的卡顿了,而且也不知道5*1这种船,要怎么用5个picturebox来显示一张船的图)还有三周就要交成品,时间挺紧的。

发帖仓促,大家见谅啊。 --------------------编程问答-------------------- 我记得Panel控件没有任何可被用户触发的事件啊,不知道你说的MouseDown事件是哪来的,要不你看看是不是这么回事? --------------------编程问答--------------------
引用 1 楼 gclol 的回复:
我记得Panel控件没有任何可被用户触发的事件啊,不知道你说的MouseDown事件是哪来的,要不你看看是不是这么回事?


我也不知道,我搜索的结果是有的,我也不知道到底可行不可行,对C#完全不熟悉。 --------------------编程问答-------------------- 获取鼠标点击的位置,你可以分为三种方式:
1:在控件中的坐标 MouseEventArgs
2: 在工作区域中的坐标 Control.MousePosition 或者this.PointToClient(e.Location);
3:在屏幕中的坐标 this.PointToScreen(e.Location);

我也正在用C#仿写一款游戏 有兴趣可以进我的博客看看 --------------------编程问答-------------------- Panel控件也有鼠标事件的,像MouseClick MouseDown MouseMove等都有的
我想楼主的问题是 你计算的坐标是相对于工作区域来说的坐标,
但事件触发的坐标是相对控件的坐标 假如控件在工作区域的50,50这个位置的话,
那事件触发的坐标就要加上这个xy后才与你计算的坐标相等,
你可以直接用Control.MousePosition来计算 不再算MouseEventArgs e。 --------------------编程问答--------------------
引用 4 楼 a_mean 的回复:
Panel控件也有鼠标事件的,像MouseClick MouseDown MouseMove等都有的
我想楼主的问题是 你计算的坐标是相对于工作区域来说的坐标,
但事件触发的坐标是相对控件的坐标 假如控件在工作区域的50,50这个位置的话,
那事件触发的坐标就要加上这个xy后才与你计算的坐标相等,
你可以直接用Control.MousePosition来计算 不再算MouseEventA……


好的,谢谢你的回复,我再看看,有问题再说。 --------------------编程问答-------------------- 好想看看到底是什么样的
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,