为何五子棋棋盘游戏时鼠标不能点棋盘以外的地方不然就卡了

4009人阅读
首先要有一个棋谱,棋谱采用围棋棋谱19*19的棋盘,棋盘绘制在PictureBox控件上。
public int Lines = 19;&&&&&&& //线条书
public int LineSpace = 30;&&& //线间距
public int Margin = 30 / 2;&&& //边距(线间距/2)
public PictureBox PicC&&& //棋盘容器控件
然后使用GDI+绘制棋盘
Bitmap bmp = new Bitmap(PicCtrl.Width, PicCtrl.Height);
Graphics g = Graphics.FromImage(bmp);
Pen linePen = new Pen(Color.Black, 1);//画线笔
//Lines条横线
for(int i = 0; i & L i++) {
&&& Point start = new Point(Margin, i * LineSpace + Margin);
&&& Point end = new Point(start.X+(Lines-1)*LineSpace, start.Y);
&&& g.DrawLine(linePen, start, end);
//Lines条竖线
最后,设计UI界面,界面中央添加PictureBox控件,并计算好Form的大小
using&S&&& &&
using&System.Collections.G&&& &&
using&System.T&&& &&
using&System.Windows.F&&& &&
using&System.D&&& &&
namespace&FivePiece&{&&& &&
&&&&class&ChessBoard&{&&& &&
&&&&&&&&public&int&Lines&=&19;&&&&&&&&
&&&&&&&&public&int&LineSpace&=&30;&&&&
&&&&&&&&public&int&Margin&=&30&/&2;&&&
&&&&&&&&public&PictureBox&PicC&&&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&public&void&DrawBoard()&{&&& &&
&&&&&&&&&&&&Bitmap&bmp&=&new&Bitmap(PicCtrl.Width,&PicCtrl.Height);&&& &&
&&&&&&&&&&&&Graphics&g&=&Graphics.FromImage(bmp);&&& &&
&&&&&&&&&&&&&&
&&&&&&&&&&&&SolidBrush&brush&=&new&SolidBrush(Color.Gold);&&& &&
&&&&&&&&&&&&g.FillRectangle(brush,&Margin,&Margin,&&& &&
&&&&&&&&&&&&&&&&(Lines&-&1)&*&LineSpace,&(Lines&-&1)&*&LineSpace);&&& &&
&&&&&&&&&&&&Pen&linePen&=&new&Pen(Color.Black,&1);&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&for(int&i&=&0;&i&&&L&i++)&{&&& &&
&&&&&&&&&&&&&&&&Point&start&=&new&Point(Margin,&i&*&LineSpace&+&Margin);&&& &&
&&&&&&&&&&&&&&&&Point&end&=&new&Point(start.X+(Lines-1)*LineSpace,&start.Y);&&& &&
&&&&&&&&&&&&&&&&g.DrawLine(linePen,&start,&end);&&& &&
&&&&&&&&&&&&}&&& &&
&&&&&&&&&&&&&&
&&&&&&&&&&&&for(int&i&=&0;&i&&&L&i++)&{&&& &&
&&&&&&&&&&&&&&&&Point&start&=&new&Point(i&*&LineSpace&+&Margin,&Margin);&&& &&
&&&&&&&&&&&&&&&&Point&end&=&new&Point(start.X,&start.Y&+&(Lines&-&1)&*&LineSpace);&&& &&
&&&&&&&&&&&&&&&&g.DrawLine(linePen,&start,&end);&&& &&
&&&&&&&&&&&&}&&& &&
&&&&&&&&&&&&PicCtrl.BackgroundImage&=&&&& &&
&&&&&&&&}&&& &&
&&&&&&&&&&& &&
&&&&}&&& &&
using&S &&
using&System.Collections.G &&
using&ponentM &&
using&System.D &&
using&System.D &&
using&System.T &&
using&System.Windows.F &&
namespace&FivePiece&{ &&
&&&&public&partial&class&MainForm&:&Form&{ &&
&&&&&&&&Game&game&=&new&Game(); &&
&&&&&&&&public&MainForm()&{ &&
&&&&&&&&&&&&InitializeComponent(); &&
&&&&&&&&&&&&game.ChessBoard.PicCtrl&=&picB &&
&&&&&&&&&&&&game.ChessBoard.DrawBoard(); &&
&&&&&&&&} &&
&&&&&&&&private&void&picBoard_MouseClick(object&sender,&MouseEventArgs&e)&{ &&
&&&&&&&&&&&&if(e.Button&==&MouseButtons.Left)&{ &&
&&&&&&&&&&&&&&&&game.DownPiece(e.Location); &&
&&&&&&&&&&&&&&&&if(game.GameOver)&{ &&
&&&&&&&&&&&&&&&&&&&&string&strColor&=&game.NextColor&==&Color.White&?&&黑&&:&&白&; &&
&&&&&&&&&&&&&&&&&&&&MessageBox.Show(&恭喜你&&+&strColor&+&&棋获得胜利!&); &&
&&&&&&&&&&&&&&&&&&&&tsslblPlayer.Text&=&&游戏结束!&&+&strColor&+&&棋获得胜利!&; &&
&&&&&&&&&&&&&&&&}&else&{ &&
&&&&&&&&&&&&&&&&&&&&string&strColor&=&game.NextColor&==&Color.White&?&&白&&:&&黑&; &&
&&&&&&&&&&&&&&&&&&&&tsslblPlayer.Text&=&&玩家:&+strColor+&棋&; &&
&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&}&else&if(e.Button&==&MouseButtons.Right)&{ &&
&&&&&&&&&&&&&&&&game.RegretPiece(); &&
&&&&&&&&&&&&&&&&string&strColor&=&game.NextColor&==&Color.White&?&&白&&:&&黑&; &&
&&&&&&&&&&&&&&&&tsslblPlayer.Text&=&&玩家:&&+&strColor&+&&棋&; &&
&&&&&&&&&&&&} &&
&&&&&&&&} &&
&&&&&&&&private&void&MainForm_Load(object&sender,&EventArgs&e)&{ &&
&&&&&&&&} &&
&&&&&&&&private&void&tsmiStart_Click(object&sender,&EventArgs&e)&{ &&
&&&&&&&&&&&&game&=&new&Game(); &&
&&&&&&&&&&&&game.ChessBoard.PicCtrl&=&picB &&
&&&&&&&&&&&&game.ChessBoard.DrawBoard(); &&
&&&&&&&&&&&&tsslblPlayer.Text&=&&玩家:白棋&; &&
&&&&&&&&} &&
&视频内容请见
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:378356次
积分:4702
积分:4702
排名:第4254名
原创:79篇
评论:351条
(1)(1)(3)(1)(1)(3)(1)(1)(1)(2)(8)(1)(2)(6)(3)(2)(1)(2)(18)(1)(2)(8)(1)(3)(6)我用java的Graphics绘制了一个五子棋的棋盘,如果想通过***鼠标点击在这个棋盘上的对应位置绘制棋子该怎么_百度知道用C语言设计的五子棋游戏中画棋盘中下列语句的含义_百度知道五子棋游戏 - 推酷
五子棋游戏
源码的github链接:/CaesarLH/learngit/blob/master/homeworktwo.txt
总体设计:
1.本程序要实现五子棋的游戏功能,必须先有一个棋盘,所以,通过继承 JPanel,然后在JPanel上画出一个棋盘,另外还有三个按钮:开始、重置游戏和退出,提醒用户进行相应的操作。当然,JPanel必须放在JFrame中,所以,又通过继承JFrame得到一个实例。
2.对于下棋的操作,通过对JPanel增加鼠标事件***器MouseListener,每次 当用户点击鼠标时,先取得点击的坐标值,然后换算成对应棋盘上(即棋盘数组)的位置(数组的下标)。
3.判断该颜色棋子的上下左右是否满足连续五个,是的话提醒相应玩家获胜, 不是的话,更换玩家下棋。
4.对于玩家的更换是程序自动的,每次用户点击鼠标后,若本局还未结束则 会变换玩家,从而画出对应黑方白方的棋子,直到有一方获胜程序技术。
心得体会:
这个课设题对我来说有一定的挑战性,因为我自己也不知道自己到底学到了一个什么样的境界。但可以肯定,这个课设题的要求绝对在我的能力范围以上。之所以选择这个题目是想逼着自己去查更多的资料,学到更多的东西。
结果也确实是这样的,我在这次课设中学到了不少东西,也理解了许多原来不理解的东西。尽管这个系统做的并不是那么的完善。
对于Java中的引用,初始化类等,开始我并不是非常的理解,知道就这么做就能实现相应的功能了,并没有很深刻的去理解它为什么要这么做。但是真正的要用Java去做一个东西不理解它是不行的,而且其间这课设涉及到了Java 中的绝大多数的知识点,如Java图形用户界面设计、Java的异常处理机制、Java中的多线程程序设计、Java输入输出流,要应用这些东西更要求我去好好理解Java的这些规则。
好在有一定的C++基础Java 与C++语法类似,并把C++中一些较低级和较难以理解的功能都去掉了,如多继承、指针等,同时Java增强了部分功能。所以理解起来也比较容易。
但是理解了Java的规则要把这个课设做好也不是那么容易,最难的部分是如何实现各个功能的划分和类的通讯问题。我在这方面就遇到了不少的问题。
总结这次课设,我还是收获不少。虽然界面也不是很美观,有点功能间的连接做的也不是特别的好,但是我能认识到自己的不足,并且在跟同学的交流中也学到了一些他们的设计思路,也知道今后要加强哪些方面的知识。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致简单五子棋
非玩不可的五子棋游戏
登录7k7k发现更多乐趣
7K7K网页游戏
7K7K儿童游戏
法律顾问:北京市诺恒律师事务所
京公网安备37
游戏作品版权归原作者享有,如无意之中侵犯了您的版权,请您按照来信告知,本网站将应您的要求删除。
7k7k小游戏温馨提示:适度游戏娱乐,沉迷游戏伤身,合理安排时间,享受快乐生活……

参考资料

 

随机推荐