VB课程设中国象棋复盘报告.doc_第1页
VB课程设中国象棋复盘报告.doc_第2页
VB课程设中国象棋复盘报告.doc_第3页
VB课程设中国象棋复盘报告.doc_第4页
VB课程设中国象棋复盘报告.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国象棋复盘设计报告学院 机械学院 班级 机设076 学号 070501 姓名 康煦晖 成绩 一、设计思路1.要达到的目的培养综合利用VB语言进行程序设计的能力培养VB的标准控件进行界面设计的能力用VB的文件功能读取文件内容并进行处理的能力2.关键问题的解决棋子的载入棋盘的更换走棋,读棋各个过程的建立载入棋谱二、模块之间的调用关系,或程序流程图 开始模块上一步下一步暂停结束三、部分程序关键源代码及注释Private Sub Form_Load()Dim j%, k%Dim X%, Y%Dim m%, n%, v%bs = 1cishu = 0time.Caption = Format(m, 00) & : & Format(s, 00)ti = 5 初始化时间间隔s = ti + 1 qp = 经典qz = 普通Call qziCall qpa载入棋盘坐标For Y = 1 To 10 body(Y) = 75 + (Y - 1) * 682Next YFor X = 1 To 9 bodx(X) = 75 + (X - 1) * 680Next Xlocate 定位棋子定位棋路For j = 1 To 9 For k = 1 To 10 bod(j, k) = board(j, k) bodbf(j, k) = board(j, k) Next kNext jEnd SubPrivate Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) Form_Load Command1_ClickEnd Sub走棋方闪烁If Command6.Enabled = True Then Image4.Visible = Not Image4.VisibleEnd IfIf rob Then Image2.Visible = False Image1.Visible = Not Image1.VisibleElse Image1.Visible = False Image2.Visible = Not Image2.VisibleEnd Ifcishu = cishu + 1End SubPrivate Sub 换方_Click()If Picture1.ScaleTop = 0 Then Picture1.ScaleLeft = 6210 - 570 Picture1.ScaleTop = 6870 - 570Else Picture1.ScaleLeft = 0 Picture1.ScaleTop = 0End If Picture1.ScaleWidth = -(Picture1.ScaleWidth) Picture1.ScaleHeight = -(Picture1.ScaleHeight)End SubPrivate Sub 暗夜_Click()qp = 暗夜Call qpaEnd SubPrivate Sub 结束_Click()Dim i%Timer1.Enabled = TruestartTimer1.Enabled = FalseList1.ClearCommand1.Enabled = TrueCommand2.Enabled = FalseCommand3.Enabled = FalseCommand4.Enabled = FalseCommand5.Enabled = FalseCommand6.Enabled = FalseEnd SubSub moe() 获得移动棋子的始末坐标Dim k%, h%, n%, sig%, xy% xi初横坐标,yi初纵坐标,xy终量或增量,xx末横坐标,yy末纵坐标Dim zhao As Stringh = 1sig = 1If Not rob Then sig = -1If rob Then zhao = Right(List1.List(bs), 4) Else zhao = Right(List1.List(bs), 4) 读取一行棋谱的招法,bs为步数分析棋谱,获取横坐标,终量或增量,棋子种类xy = num(Mid(zhao, 4, 1)If Mid(zhao, 1, 1) = 前 Or Mid(zhao, 1, 1) = 后 Then Select Case Mid(zhao, 2, 1) Case 士, 仕 n = sig * 2 Case 相, 象 n = sig * 4 Case 将, 帅 n = sig * 1 Case 卒, 兵 n = sig * 7 Case 车 n = sig * 5 Case 炮 n = sig * 6 Case 马 n = sig * 3 End Select If (Mid(zhao, 1, 1) = 前 And rob) Or (Mid(zhao, 1, 1) = 后 And Not rob) Then 判断棋子位置,即获取纵坐标 k = 1 For h = 1 To 9 For k = 1 To 10 If bod(h, k) = n Then yi = k: xi = h Exit For End If Next k Next h Else 判断棋子位置,即获取纵坐标 k = 10 For h = 1 To 9 For k = 10 To 1 Step -1 If bod(h, k) = n Then yi = k: xi = h Exit For End If Next k Next h End IfElse jk = num(Mid(zhao, 2, 1) xi = 5 + 5 * sig - sig * num(Mid(zhao, 2, 1) Select Case Mid(zhao, 1, 1) Case 士, 仕 n = sig * 2 Case 相, 象 n = sig * 4 Case 将, 帅 n = sig * 1 Case 卒, 兵 n = sig * 7 Case 车 n = sig * 5 Case 炮 n = sig * 6 Case 马 n = sig * 3 End Select 判断棋子位置,即获取纵坐标 k = 1 For k = 1 To 10 If bod(xi, k) = n Then yi = k Exit For End If Next k End If获得移动棋子终棋路Select Case Mid(zhao, 3, 1) Case 平 xx = 5 + 5 * sig - sig * xy yy = yi Case 进 Select Case Abs(n) Case 2, 3, 4 xx = 5 + 5 * sig - sig * xy yy = yi - sig * (Abs(n) - Abs(5 + 5 * sig - sig * xy - xi) Case Else xx = xi yy = yi - sig * xy End Select Case 退 Select Case Abs(n) Case 2, 3, 4 xx = 5 + 5 * sig - sig * xy yy = yi + sig * (Abs(n) - Abs(5 + 5 * sig - sig * xy - xi) Case Else xx = xi yy = yi + sig * xy End SelectEnd SelectIf yy 10 Or yy 1 ThenPrint 12End IfEnd SubSub mov() 移动红方或黑方棋子Call moeatk = ind(xi, yi) 判断攻方棋子数组下标MMControl1.Command = closeMMControl1.DeviceType = WaveAudioIf bod(xx, yy) 0 Then def = ind(xx, yy) 判断守方棋子数组下标 Image0(def).Visible = False Image0(def).Tag = 1 MMControl1.FileName = App.Path & source吃子.wav 吃子声音Else MMControl1.FileName = App.Path & source走子.wav 走子声音End IfIf Image0(0).Visible And Image0(16).Visible Then MMControl1.Command = OpenMMControl1.Command = playImage0(atk).Left = bodx(xx)Image0(atk).Top = body(yy)bod(xx, yy) = bod(xi, yi)bod(xi, yi) = 0 Image3.Top = body(yi) Image3.Left = bodx(xi) Image4.Top = body(yy) Image4.Left = bodx(xx)判断棋局是否结束If Image0(0).Tag + Image0(16).Tag = 1 Or List1.ListIndex = maxlistindex - 2 Then Timer1.Enabled = False Command4.Enabled = False Command6.Enabled = False MMControl1.Command = close MMControl1.DeviceType = WaveAudio MMControl1.FileName = App.Path & source结局.wav 结局声音 MMControl1.Command = Open MMControl1.Command = playEnd IfIf bs = 0 Then Command5.Enabled = TrueEnd Sub四、设计方案的完善及目前存在的问题1设计方案要完善的地方代码需要进一步简化有些过程不够完整不能直接调用上一步2. 目前存在的问题不能直接调入棋谱不能人机对弈不能用鼠标拖拽五、本次设计的收获及心得体会 通过本次的课程设计,我深深的感觉到了这门课程是非常有趣的,同时也体会到这课程也是相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论