|
|
三国志姜维传设计思想(部分内政程序代码加注释)
如果看不清楚请COPY到你的记事本上,有些语句长。
这里没有公布战争部分和8个TIMER是怎么工作的代码,因为这个是属于我自己的程序结构,
我只大概写一下内政程序是怎么工作的,我的V1.68版程序目前总长3600行。
'AGn=1 城市属于蜀国,AGn=2城市属于魏国 ,AGn=3 城市属于吴国
AG1 = 1 '蜀国城市(游戏开始你只有一个城市)
AG6 = 2: AG7 = 2: AG8 = 2: AG9 = 2: AG10 = 2: AG11 = 2: AG12 = 2 '魏国城市
AG2 = 3 AG3 = 3: AG4 = 3: AG5 = 3 '吴国城市
BZ = 0 '操作标志 =1:调动 =2:征兵 =3:施舍 =4:训练 =5:开垦 =6:奖赏 =7:交易
UPDT=1 '你在哪个城市,如果=1,就是说你在成都,=2就是在江州...... 12个城市
YE1 = 234: YE2 = 5: YE4 = 3 '游戏起始年月, 每月可以做3件事
--------------------------------------------------------------------------------
'//////开垦程序1 ////////
Private Sub CM1_Click()
If UPDT = 1 And AG1 <> 1 Then Call NOMYGG: GoTo XXX1 '不是自己的城市不能操作(12个判断)
If UPDT = 2 And AG2 <> 1 Then Call NOMYGG: GoTo XXX1
If UPDT = 3 And AG3 <> 1 Then Call NOMYGG: GoTo XXX1
If UPDT = 4 And AG4 <> 1 Then Call NOMYGG: GoTo XXX1
If UPDT = 5 And AG5 <> 1 Then Call NOMYGG: GoTo XXX1
If UPDT = 6 And AG6 <> 1 Then Call NOMYGG: GoTo XXX1
If UPDT = 7 And AG7 <> 1 Then Call NOMYGG: GoTo XXX1
If UPDT = 8 And AG8 <> 1 Then Call NOMYGG: GoTo XXX1
If UPDT = 9 And AG9 <> 1 Then Call NOMYGG: GoTo XXX1
If UPDT = 10 And AG10 <> 1 Then Call NOMYGG: GoTo XXX1
If UPDT = 11 And AG11 <> 1 Then Call NOMYGG: GoTo XXX1
If UPDT = 12 And AG12 <> 1 Then Call NOMYGG: GoTo XXX1
BZ = 5 '开垦按钮操作标志
BitBlt Me.hDC, 477, 4, 200, 164, SJ(2).hDC, 0, 0, SRCCOPY '这是画图的
Call TONGYONG6
XXX1:
End Sub
--------------------------------------------------------------------------------
'/////////////游戏者----征兵,开垦,训练,交易,奖赏,施舍 按钮公用子程序//////////////
Sub TONGYONG6()
Call ONE ''重画和刷新城市
If YE4 <= 0 Then YE4 = 0: BitBlt Me.hDC, 477, 4, 200, 164, SJ(1).hDC, 0, 0, SRCCOPY: Call DCOMMAND
If UPDT = 1 And AG1 = 1 And YE4 > 0 Then Call XIANSHI12: CITY1.Visible = True '游戏者在成都行使指令
If UPDT = 2 And AG2 = 1 And YE4 > 0 Then Call XIANSHI12: CITY2.Visible = True '游戏者在江州行使指令
If UPDT = 3 And AG3 = 1 And YE4 > 0 Then Call XIANSHI12: CITY3.Visible = True '游戏者在永安行使指令
If UPDT = 4 And AG4 = 1 And YE4 > 0 Then Call XIANSHI12: CITY4.Visible = True '游戏者在长沙行使指令
If UPDT = 5 And AG5 = 1 And YE4 > 0 Then Call XIANSHI12: CITY5.Visible = True '游戏者在江夏行使指令
If UPDT = 6 And AG6 = 1 And YE4 > 0 Then Call XIANSHI12: CITY6.Visible = True '游戏者在建业行使指令
If UPDT = 7 And AG7 = 1 And YE4 > 0 Then Call XIANSHI12: CITY7.Visible = True '游戏者在徐州行使指令
If UPDT = 8 And AG8 = 1 And YE4 > 0 Then Call XIANSHI12: CITY8.Visible = True '游戏者在陈留行使指令
If UPDT = 9 And AG9 = 1 And YE4 > 0 Then Call XIANSHI12: CITY9.Visible = True '游戏者在许昌行使指令
If UPDT = 10 And AG10 = 1 And YE4 > 0 Then Call XIANSHI12: CITY10.Visible = True '游戏者在洛阳行使指令
If UPDT = 11 And AG11 = 1 And YE4 > 0 Then Call XIANSHI12: CITY11.Visible = True '游戏者在长安行使指令
If UPDT = 12 And AG12 = 1 And YE4 > 0 Then Call XIANSHI12: CITY12.Visible = True '游戏者在汉中行使指令
Me.Refresh
End Sub
Sub XIANSHI12() '显示取消指令按钮和12个城市的名字
CM10.Visible = True: BitBlt Me.hDC, 681, 173, 118, 320, CITY12A.hDC, 0, 0, SRCCOPY
End Sub
Sub NOMYGG() '显示不是自己的国家
BitBlt Me.hDC, 477, 4, 200, 164, SJ(23).hDC, 0, 0, SRCCOPY: Me.Refresh
sndPlaySound "MUS\OVER.wav", SND_ASYNC
End Sub
-----------------------------------------------------------------------------------------
'单一城市举例(实际上这些程序还要和很多SUB子程序挂接)
Private Sub CITY1_Click()
If BZ = 8 Then '进攻成都
IX = 60: IY = 256: PX = 1
Call BCOMMAND: Timer5.Enabled = True
If UPDT = 12 Then WARLB1.Caption = L3: ZZK1 = 1 '由汉中出发
If UPDT = 2 Then WARLB1.Caption = B3: ZZK2 = 1 '由江州出发
WARLB2.Caption = A3
End If
If BZ = 1 Then '调动物资
Form1.Hide: WINDD.Show: IX = 60: IY = 256
If UPDT = 2 Then '江州到成都
WINDD.HScroll1.Max = 0: WINDD.HScroll2.Max = 0: WINDD.HScroll3.Max = 0
WINDD.Label1 = WINDD.HScroll1.Value: WINDD.HScroll1.Max = B3
WINDD.Label2 = WINDD.HScroll2.Value: WINDD.HScroll2.Max = B9
WINDD.Label3 = WINDD.HScroll3.Value: WINDD.HScroll3.Max = B10
DDA = 1 '识别城市的指针
End If
If UPDT = 12 Then '汉中到成都
WINDD.HScroll1.Max = 0: WINDD.HScroll2.Max = 0: WINDD.HScroll3.Max = 0
WINDD.Label1 = WINDD.HScroll1.Value: WINDD.HScroll1.Max = L3
WINDD.Label2 = WINDD.HScroll2.Value: WINDD.HScroll2.Max = L9
WINDD.Label3 = WINDD.HScroll3.Value: WINDD.HScroll3.Max = L10
DDB = 1 '识别城市的指针
End If
End If
'征兵
If BZ = 2 And A10 >= 1500 Then A10 = A10 - 1500: A3 = A3 + 500: SU1 = 0: sndPlaySound "MUS\HAPPY.wav", SND_ASYNC
If BZ = 3 And A6 < 100 And A9 >= 1000 Then A9 = A9 - 1000: A6 = A6 + 1: sndPlaySound "MUS\BELL2.wav", SND_ASYNC
'训练
If BZ = 4 And A11 < 100 Then
If A9 >= 100 Then A9 = A9 - 100 '训练每次扣粮100(12个城同)
A11 = A11 + Int(Rnd * 2): sndPlaySound "MUS\HORSE03.wav", SND_ASYNC
End If
'开垦
If BZ = 5 And A7 < 1000 Then
If A10 >= 50 Then A10 = A10 - 50 '开垦每次扣钱50(12个城同)
A7 = A7 + Int(Rnd * 3): sndPlaySound "MUS\COW01.wav", SND_ASYNC
End If
'奖赏
If BZ = 6 And A10 >= 200 Then A10 = A10 - 200: sndPlaySound "MUS\HAPPY.wav", SND_ASYNC
If BZ = 7 And A8 < 1000 Then A8 = A8 + Int(Rnd * 3): sndPlaySound "MUS\HAPPY.wav", SND_ASYNC
Call CMD1DATA
If YE4 > 0 Then YE4 = YE4 - 1 '每个月做一件事减1
If YE4 <= 0 Then YE4 = 0 '=0就要到下个月才可以做事
End Sub
--------------------------------------------------------------------------------
'/////// 本月结束 /////////
Private Sub CM11_Click()
YE2 = YE2 + 1 '月加1
BZ = 0 '指针归零
SU1 = 1 '可以征兵
SU3 = 1 '可以打仗
MUS = 1 '打仗换音乐的开关
SND = 1 '声音开关
X1 = 240: Y1 = 320: XA = 1: XB = 1 '部队回到出发地
DDA = 0: DDB = 0
'季节变化
If YE2 = 1 Or YE2 = 2 Or YE2 = 3 Or YE2 = 4 Or YE2 = 5 Or YE2 = 6 Then BitBlt Me.hDC, 0, 0, 680, 493, CHUNTIAN.hDC, 0, 0, SRCCOPY '切换春天背景
If YE2 = 7 Or YE2 = 8 Or YE2 = 9 Then BitBlt Me.hDC, 0, 0, 680, 493, XIATIAN.hDC, 0, 0, SRCCOPY '切换夏天背景
If YE2 = 10 Or YE2 = 11 Or YE2 = 12 Then BitBlt Me.hDC, 0, 0, 680, 493, DONGTIAN.hDC, 0, 0, SRCCOPY
Call ONE '重画和刷新城市
If YE2 = 12 Then sndPlaySound "MUS\BIRDS.wav", SND_ASYNC '下一年开始 鸟叫
If YE2 = 4 Then '台风(每年4月)
'////////////灾害概率1////////
YEON = 1 '区别灾害的指针
Call SUIJIZH ‘灾害概率随机数发生子程序
sndPlaySound "MUS\WIND.wav", SND_ASYNC
End If
If YE2 = 10 Then '水灾(每年10月)
'////////////灾害概率2////////
YEON = 2 '区别灾害的指针
Call SUIJIZH ‘灾害概率随机数发生子程序
sndPlaySound "MUS\WATER.wav", SND_ASYNC
End If
If YE2 = 7 Then '丰收和欠收(每年7月)
'////////////灾害概率3////////
YEON = 3 '区别灾害的指针
Call SUIJIZH ‘灾害概率随机数发生子程序
sndPlaySound "MUS\HAPPY.wav", SND_ASYNC
End If
'-------------------敌国征兵(不是自己的国家)---------
If AG1 <> 1 Then A3 = A3 + Int(Rnd * 300)
If AG2 <> 1 Then B3 = B3 + Int(Rnd * 300)
If AG3 <> 1 Then C3 = C3 + Int(Rnd * 300)
If AG4 <> 1 Then D3 = D3 + Int(Rnd * 300)
If AG5 <> 1 Then E3 = E3 + Int(Rnd * 300)
If AG6 <> 1 Then F3 = F3 + Int(Rnd * 300)
If AG7 <> 1 Then G3 = G3 + Int(Rnd * 300)
If AG8 <> 1 Then H3 = H3 + Int(Rnd * 300)
If AG9 <> 1 Then I3 = I3 + Int(Rnd * 300)
If AG10 <> 1 Then J3 = J3 + Int(Rnd * 300)
If AG11 <> 1 Then K3 = K3 + Int(Rnd * 300)
If AG12 <> 1 Then L3 = L3 + Int(Rnd * 300)
'-------------------每过一年加粮食---------------
If YE2 > 12 Then '过了12月才才可以
YE2 = 1: YE1 = YE1 + 1
A9 = A9 + Int(Rnd * 500): If A9 > 10000 Then A9 = 10000
B9 = B9 + Int(Rnd * 500): If B9 > 10000 Then B9 = 10000
C9 = C9 + Int(Rnd * 500): If C9 > 10000 Then C9 = 10000
D9 = D9 + Int(Rnd * 500): If D9 > 10000 Then D9 = 10000
E9 = E9 + Int(Rnd * 500): If E9 > 10000 Then E9 = 10000
F9 = F9 + Int(Rnd * 500): If F9 > 10000 Then F9 = 10000
G9 = G9 + Int(Rnd * 500): If G9 > 10000 Then G9 = 10000
H9 = H9 + Int(Rnd * 500): If H9 > 10000 Then H9 = 10000
I9 = I9 + Int(Rnd * 500): If I9 > 10000 Then I9 = 10000
J9 = J9 + Int(Rnd * 500): If J9 > 10000 Then J9 = 10000
K9 = K9 + Int(Rnd * 500): If K9 > 10000 Then K9 = 10000
L9 = L9 + Int(Rnd * 500): If L9 > 10000 Then L9 = 10000
End If
'后面的与此同类推
.........................
................
END SUB |
|