- 浏览: 1700324 次
- 性别:
- 来自: 杭州699号
文章分类
最新评论
-
莫莫摸:
为什么不用dubbo
RCP数据传输模型回顾 -
大胡子爸爸:
String, Class 都实现了Serializable接 ...
RPC框架几行代码就够了 -
lss598018587:
谢谢大神分享,比起新手看复杂的dubbo框架还不如看大神的这一 ...
RPC框架几行代码就够了 -
15606915740:
你好,请问一下。<dubbo:consumer filt ...
Dubbo文档 -
joqk12345:
...
一些设计上的基本常识
互连游戏的结构
我现在准备编红外互连游戏所以先介绍一下,希望有兴趣的朋友一起编
因为lava好像不支持call和poke所以现在就在basic上做,汇编我在学,
应该会有像样的游戏的
我也没什么经验,所以都是自己设计的框架,有更好的请大家指出一起分享
互连游戏的主要结构是一个完整的游戏代码和数据发送接受判断程序,
下面我就简单介绍一下
1.过程:
接受数据和发送数据不能同步进行的,所以有先后如
甲机:运行------等待连线------发送数据------接受数据-----运行
乙机:运行------等待连线------接受数据------发送数据-----运行
这样就完成了一个简单的数据交互过程
2.框架.
有人会想,这样不是要两个不同的程序??
其实不用,你只要设定机号就可以了,就像英雄坛说和我的豪斯网络版,首先要选择你做主机还是对方是,如
在我的豪斯里如果你在进入的时候选择了庄家,那么你的变量TAI就=0也就是说在接下去的程序运行中你都是先发送后接受,而如果你是选择闲家,那么你的变量TAI就=1也就是说你是先接受后发送
例
甲机 定义TAI值
甲机 运行-----ON TAI+1 GOTO 庄家,闲家
-----庄家 GOSUB 连线:GOSUB 发送:GOSUB 接受-----运行
-----闲家 GOSUB 连线:GOSUB 接受:GOSUB 发送-----运行
运行-------------
这样就分TAI值不同成了两个分区
如果乙机同时定义另外的TAI值就可以完成双机数据交换了!!!!
下面就是发送和接受等的代码:
1150 REM连线准备
1160 DATA 0,074,01,96,0,0,0,0,176,240,17,0,0
1170 FOR I=5880 TO 5892
1180 READ D
1190 POKE I,D
1200 NEXT I
1210 POKE 3840,176
1220 POKE 3841,240
1230 POKE 3842,017
1240 POKE 3843,000
1250 POKE 3844,000
1260 CALL 5880:S$="":P$=""
发送:
1350 SO=0:SCK$=" "
1351 FOR SB=1 TO SA
1352 SC=PEEK(59)/2
1353 IF INT(SC)=SC THEN GOTO 1356
1354 SCK$=RIGHT$(SCK$,2)+CHR$(PEEK(58))
1355 IF SCK$="RDY" THEN SO=1:SB=SA
1356 NEXT SB:RETURN
1400 REM发送等待
1410 CALL 5880
1420 SA=4000
1430 GOSUB 1350
1440 IF SO=0 THEN TITI$="双机发送失败":GOSUB 1100:A$=INKEY$:GOTO (主界面)
1445 RETURN
1110 CLS:LOCATE 3,5:PRINT TITI$:LOCATE 2,5:PRINT ""
1120 LOCATE 4,5:PRINT ""
1130 BOX 28,12,131,67:BOX 27,11,132,68
1140 RETURN
1280 FOR SZ=1 TO 95:NEXT SZ:RETURN
1290 SA=LEN(S$)
1291 FOR SB=1 TO SA
1292 POKE 58,ASC(MID$(S$,SB,1))
1293 FOR SC=1 TO 40
1294 NEXT SC:NEXT SB:POKE 58,0:RETURN
1300 REM发送过程
1301 CALL 5880
1310 GOSUB 1280
1320 S$="RDY"+P$
1330 GOSUB 1290
1340 RETURN
1350 SO=0:SCK$=" "
1351 FOR SB=1 TO SA
1352 SC=PEEK(59)/2
1353 IF INT(SC)=SC THEN GOTO 1356
1354 SCK$=RIGHT$(SCK$,2)+CHR$(PEEK(58))
1355 IF SCK$="RDY" THEN SO=1:SB=SA
1356 NEXT SB:RETURN
1449 FOR SZ=1 TO 95:NEXT SZ:RETURN
1450 POKE 58,82:GOSUB 1449
1451 POKE 58,68:GOSUB 1449
1452 POKE 58,89:RETURN
1500 REM接收等待
1510 SO=0:T=30
1520 WHILE T>0 AND SO=0
1530 CALL 5880
1535 GOSUB 1450
1540 CALL 5880
1550 SA=100
1560 GOSUB 1350
1570 T=T-1
1580 WEND
1590 IF SO<>1 THEN TITI$="双机接收失败":GOSUB 1100:A$=INKEY$:GOTO 340
1595 RETURN
1600 REM接收过程
1610 S$=""
1620 IF PEEK(199)=241 THEN GOTO 1650
1630 SA=PEEK(59)/2:IF INT(SA)=SA THEN GOTO 1620
1640 SB=PEEK(58):IF SB=0 THEN GOTO 1660 ELSE S$=S$+CHR$(SB):GOTO 1620
1650 S$="":POKE 199,13
1660 RETURN
这样可能比较乱:
我就把我写的一段程序贴上来吧:
30 GRAPH:CLS:A$="对战":B$="豪斯"
35 FOR I=1 TO 5:CLS
40 LOCATE 3,I:PRINT A$:LOCATE 3,18-I:PRINT B$:FOR A=1 TO 100:NEXT A:NEXT I
45 X=80:Y=40
50 FOR I=1 TO 33 STEP 15
60 BOX 1,1,160,80,1,0:PRINT "";:LINE 35+I,40,79,I:LINE 80,I,125-I,40:LINE 35+I,40,79,80-I
70 LINE 80,80-I,125-I,40
80 FOR A=1 TO 80:NEXT A:NEXT I
90 LOCATE 3,10:PRINT "vs"
100 FOR I=30 TO 80
110 DRAW I,51:DRAW I,53:DRAW I,29:DRAW I,27
120 DRAW 160-I,51:DRAW 160-I,53:DRAW 160-I,29:DRAW 160-I,27:NEXT I
130 FOR I=1 TO 800:NEXT I
140 BOX 30,27,130,53,1,1
150 FOR I=1 TO 25 STEP 5
160 CLS:BOX 30+I,27-I/2,130-I,53-I,1,1:FOR A=1 TO 90:NEXT A:NEXT I
161 FOR I=1 TO 35 STEP 5
162 CLS:BOX 55-I,12,105+I,34,1,1:FOR A=1 TO 60:NEXT A:NEXT I
170 CLS:LOCATE 2,4:PRINT "对战豪斯网络版"
180 BOX 22,13,137,33:BOX 20,11,139,35:BOX 19,10,140,36:Z$(3)="账号通讯"
190 Z$(1)="进入游戏":Z$(2)="注册账号":Z$(4)="退出游戏":LOCATE 4,7:PRINT "进入游戏":Z=1
195 LINE 46,65,114,65:LINE 46,45,114,45
200 K=ASC(INKEY$)
210 IF K=20 THEN Z=Z-1 :GOTO 250
220 IF K=21 THEN Z=Z+1 :GOTO 250
230 IF K=13 THEN GOTO 300
240 BEEP:GOTO 200
250 IF Z>4 THEN Z=1 GOTO 270
260 IF Z<1 THEN Z=4 GOTO 270
270 FOR I=47 TO 63
280 LINE 48,I,112,I:NEXT I:FOR I=47 TO 63:LINE 48,I,112,I,0:FOR II=1 TO 10:NEXT II:NEXT I
290 LOCATE 4,7:PRINT Z$(Z):GOTO 200
300 ON Z GOTO 310,320,330,340
310 GOSUB 350:GOSUB 400:GOTO 450//进入游戏
320 GOTO 500://设账号
330 GOTO 1700://传
340 POKE 199,166:END
341 END
350 CLS:LOCATE 2,5:PRINT "账号:";:LOCATE 4,5:PRINT "密码:";
360 BOX 74,14,140,34:BOX 74,46,140,66:BOX 20,10,140,70:BOX 19,9,141,71
370 LOCATE 2,11:INPUT "*";NAME$:LOCATE 4,11:INPUT "*";WORD$
380 RETURN
400 REM密码
401 OPEN NAME$+"-hs" FOR RANDOM AS#1:CLOSE#1
410 IF LOF(1)<>0 THEN GOTO 420 ELSE 411
411 LOCATE 3,5:PRINT "账号不存在!!":A$=INKEY$:GOTO 170
420 OPEN NAME$+"-hs" FOR INPUT AS#1
430 INPUT#1,MIN$,MIM$,MONEY:CLOSE#1
440 IF MIM$<>WORD$ THEN LOCATE 3,5:PRINT "密码错误!!":A$=INKEY$:GOTO 170
445 RETURN
450 GOTO 600://进入
500 CLS:LOCATE 2,6:PRINT "*您的昵称*":BOX 30,12,130,65:BOX 35,45,125,65:BOX 29,11,131,66
505 LOCATE 4,6:INPUT "*";MIN$
510 GOSUB 350
520 OPEN NAME$+"-hs" FOR RANDOM AS#1:CLOSE#1
530 IF LOF(1)=0 THEN GOTO 550
540 LOCATE 3,5:PRINT "账号已存在!!":A$=INKEY$:GOTO 500
550 MONEY=2000:MIM$=WORD$:OPEN NAME$+"-hs" FOR OUTPUT AS#1
560 WRITE#1,MIN$,MIM$,MONEY:CLOSE#1
570 LOCATE 3,5:PRINT "新建成功!!":A$=INKEY$:CLS:CLEAR:GOTO 170
600 CLS:LOCATE 2,3:PRINT MIN$
610 LOCATE 3,3:PRINT "$";MONEY:BOX 10,12,90,50:BOX 9,11,91,51
620 LOCATE 3,15:PRINT "庄家":LOCATE 4,15:PRINT "闲家"
630 BOX 108,28,147,67:BOX 107,27,148,68:BOX 112,32,143,47,1,2:ZHU=0
640 K=ASC(INKEY$)
650 IF K=13 THEN GOTO 1000://主线
660 BOX 112,32,143,63,1,2:ZHU=ABS(ZHU-1):GOTO 640
1000 TAI=ZHU+1:TITI$="正在连线!..."
1010 GOSUB 1100:GOSUB 1150
1020 ON TAI GOTO 1030,1040
1030 REM庄家
1031 P$=MIN$:GOSUB 1400
1032 GOSUB 1300:P$=STR$(MONEY):GOSUB 1400:GOSUB 1300
1033 GOSUB 1500:GOSUB 1600:TMIN$=S$:GOSUB 1500:GOSUB 1600:TMONEY=VAL(S$):GOTO 2000
1040 REM闲家
1041 GOSUB 1500:GOSUB 1600:TMIN$=S$:GOSUB 1500:GOSUB 1600:TMONEY=VAL(S$)
1042 P$=MIN$:GOSUB 1400
1043 GOSUB 1300:P$=STR$(MONEY):GOSUB 1400:GOSUB 1300:GOTO 2000
1100 REM状态
1110 CLS:LOCATE 3,5:PRINT TITI$:LOCATE 2,5:PRINT ""
1120 LOCATE 4,5:PRINT ""
1130 BOX 28,12,131,67:BOX 27,11,132,68
1140 RETURN
1150 REM连线准备
1160 DATA 0,074,01,96,0,0,0,0,176,240,17,0,0
1170 FOR I=5880 TO 5892
1180 READ D
1190 POKE I,D
1200 NEXT I
1210 POKE 3840,176
1220 POKE 3841,240
1230 POKE 3842,017
1240 POKE 3843,000
1250 POKE 3844,000
1260 CALL 5880:S$="":P$=""
1270 RETURN
1280 FOR SZ=1 TO 95:NEXT SZ:RETURN
1290 SA=LEN(S$)
1291 FOR SB=1 TO SA
1292 POKE 58,ASC(MID$(S$,SB,1))
1293 FOR SC=1 TO 40
1294 NEXT SC:NEXT SB:POKE 58,0:RETURN
1300 REM发送过程
1301 CALL 5880
1310 GOSUB 1280
1320 S$="RDY"+P$
1330 GOSUB 1290
1340 RETURN
1350 SO=0:SCK$=" "
1351 FOR SB=1 TO SA
1352 SC=PEEK(59)/2
1353 IF INT(SC)=SC THEN GOTO 1356
1354 SCK$=RIGHT$(SCK$,2)+CHR$(PEEK(58))
1355 IF SCK$="RDY" THEN SO=1:SB=SA
1356 NEXT SB:RETURN
1400 REM发送等待
1410 CALL 5880
1420 SA=4000
1430 GOSUB 1350
1440 IF SO=0 THEN TITI$="双机发送失败":GOSUB 1100:A$=INKEY$:GOTO 340
1445 RETURN
1449 FOR SZ=1 TO 95:NEXT SZ:RETURN
1450 POKE 58,82:GOSUB 1449
1451 POKE 58,68:GOSUB 1449
1452 POKE 58,89:RETURN
1500 REM接收等待
1510 SO=0:T=30
1520 WHILE T>0 AND SO=0
1530 CALL 5880
1535 GOSUB 1450
1540 CALL 5880
1550 SA=100
1560 GOSUB 1350
1570 T=T-1
1580 WEND
1590 IF SO<>1 THEN TITI$="双机接收失败":GOSUB 1100:A$=INKEY$:GOTO 340
1595 RETURN
1600 REM接收过程
1610 S$=""
1620 IF PEEK(199)=241 THEN GOTO 1650
1630 SA=PEEK(59)/2:IF INT(SA)=SA THEN GOTO 1620
1640 SB=PEEK(58):IF SB=0 THEN GOTO 1660 ELSE S$=S$+CHR$(SB):GOTO 1620
1650 S$="":POKE 199,13
1660 RETURN
1700 CLS:LOCATE 2,5:PRINT " 操 作 选 择":LOCATE 4,7:PRINT "发送 接收":XUAN=0
1710 BOX 28,12,139,67:BOX 27,11,140,68:BOX 40,44,127,67:BOX 44,48,83,63,1,2
1720 K=ASC(INKEY$)
1730 IF K=13 THEN GOTO 1750
1740 XUAN=ABS(XUAN-1):BOX 44,48,123,63,1,2:GOTO 1720
1750 XXUAN=XUAN+1:GOSUB 1150
1760 ON XXUAN GOTO 1770,1810
1770 GOSUB 350:GOSUB 400:
1780 TITI$="账号发送!...":GOSUB 1100
1790 P$=NAME$:GOSUB 1400:GOSUB 1300:P$=MIN$:GOSUB 1400:GOSUB 1300
1795 P$=MIM$:GOSUB 1400:GOSUB 1300:P$=STR$(MONEY)
1800 GOSUB 1400:GOSUB 1300:TITI$="账号发送成功":GOSUB 1100:A$=INKEY$:GOTO 340
1810 TITI$="账号接收!...":GOSUB 1100
1820 GOSUB 1500:GOSUB 1600:NAME$=S$:GOSUB 1500:GOSUB 1600:MIN$=S$:GOSUB 1500:GOSUB 1600
1830 MIM$=S$:GOSUB 1500:GOSUB 1600:MONEY=VAL(S$)
1835 CALL 5880:FOR I=1 TO 500:NEXT I
1840 OPEN NAME$+"-hs" FOR RANDOM AS#1:CLOSE#1
1850 IF LOF(1)<>0 THEN GOTO 1890
1860 OPEN NAME$+"-hs" FOR OUTPUT AS#1
1870 WRITE#1,MIN$,MIM$,MONEY:CLOSE#1:TITI$="账号接收成功"
1880 A$=INKEY$:GOTO 340
1890 TITI$="覆盖原账号/Y":GOSUB 1100
1900 K$=INKEY$
1910 IF K$="y" THEN GOTO 1860
1920 TITI$="未覆盖原账号":GOSUB 1100:A$=INKY$:GOTO 340
2000 PRINT TMIN$,TMONEY,"vs",MIN$,MONEY
这是画面的代码:
1 TAI=1:XI=2:MIN$="信志":MONEY=2000:TMIN$="雨晴":TMONEY=2000
10 GRAPH:PRINT "XIPAI"
20 DIM PAI$(52),HUA$(52)
30 OPEN "hssysa" FOR INPUT AS#1
40 FOR I=1 TO 52
50 INPUT#1,PAI$(I),HUA$(I):NEXT I
59 PRINT "QUPAI"
60 FOR I=1 TO 10
70 PAIA(I)=INT(RND(1)*100)
80 IF PAIA(I)<1 OR PAIA(I)>52 THEN GOTO 70
90 IF I>1 THEN GOTO 100 ELSE 130
100 FOR S=1 TO I-1
110 IF PAIA(I)=PAIA(S)THEN GOTO 70
120 NEXT S
130 NEXT I
140 FOR I=1 TO 10:PRINT PAI$(PAIA(I));HUA$(PAIA(I));",";
150 NEXT I
160 A$=INKEY$:CLS
161 PS=1:RO=1:ON TAI GOTO 162,165:
162 GOSUB 250:GOSUB 300:LOCATE 4,6:PRINT WP$(RO):LOCATE 5,6:PRINT WH$(RO);
163 BOX 38,48,58,80:GOSUB 240:BOX 38,0,58,31:GOSUB 240:GOTO 170
165 GOSUB 300:GOSUB 250:BOX 38,0,58,31:GOSUB 240:LOCATE 4,6:PRINT WP$(RO)
166 LOCATE 5,6:PRINT WH$(RO);:BOX 38,48,58,80:GOSUB 240:GOTO 170
170 PS=3:FOR ROUND=2 TO 5
180 ON TAI GOTO 184,190
181 GOSUB 240:NEXT ROUND:A$=INKEY$:CLS:GOTO 60
184 RO=ROUND:HH=(RO+1)*3:GOSUB 250:GOSUB 300:GOSUB 500
185 LOCATE 4,HH:PRINT WP$(RO)
186 LOCATE 5,HH:PRINT WH$(RO);:GOSUB 540:GOSUB 240:LOCATE 1,HH:PRINT TP$(RO)
187 LOCATE 2,HH:PRINT TH$(RO):GOSUB 520:BOX XX,48,XX+20,80
188 GOTO 181
190 RO=ROUND:HH=(RO+1)*3:GOSUB 300:GOSUB 250:GOSUB 500
191 LOCATE 1,HH:PRINT TP$(RO)
192 LOCATE 2,HH:PRINT TH$(RO);:GOSUB 520:GOSUB 240:LOCATE 4,HH:PRINT WP$(RO)
193 LOCATE 5,HH:PRINT WH$(RO);:GOSUB 540:BOX XX,0,XX+20,31
194 GOTO 181
240 FOR I=1 TO 500:NEXT I:RETURN
250 REM定我牌
260 WP$(RO)=PAI$(PAIA(PS)):WH$(RO)=HUA$(PAIA(PS)):WP(RO)=PAIA(PS):PS=PS+1
270 RETURN
300 REM定他牌
310 TP$(RO)=PAI$(PAIA(PS)):TH$(RO)=HUA$(PAIA(PS)):TP(RO)=PAIA(PS):PS=PS+1
320 RETURN
498 SWAP TAI,XI
499 RETURN
500 IF PAIA(PS-2)<PAIA(PS-1)THEN GOSUB 498
510 RETURN
520 REM上边框
530 FOR I=1 TO RO-1:XX=((I+1)*3-1)*8-2:BOX XX,0,XX+20,31:BOX XX,48,XX+20,80:NEXT I:
535 XX=((RO+1)*3-1)*8-2:BOX XX,0,XX+20,31
536 RETURN
540 REM下边框
550 FOR I=1 TO RO-1:XX=((I+1)*3-1)*8-2:BOX XX,0,XX+20,31:BOX XX,48,XX+20,80:NEXT I:
555 XX=((RO+1)*3-1)*8-2:BOX XX,48,XX+20,80
560 RETURN
这是data文件的代码:
10 REM牌面
20 DATA 2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8
30 DATA 9,9,9,9,10,10,10,10,J,J,J,J,Q,Q,Q,Q,K,K,K,K,A,A,A,A
40 REM花色
50 DATA,,,,,,,,,,,,,,,,,,,,,,,,,,,
60 DATA,,,,,,,,,,,,,,,,,,,,,,,,,,,
70 DIM PAI$(52),HUA$(52):FOR I=1 TO 52
80 READ A$:PAI$(I)=A$
90 NEXT I
100 FOR I=1 TO 52
110 READ A$:HUA$(I)=A$
120 NEXT I
130 OPEN "hssysa" FOR OUTPUT AS#1
140 FOR I=1 TO 52
150 WRITE#1,PAI$(I),HUA$(I)
160 NEXT I
170 CLOSE#1
花色显示不出来,我放附件里吧!!在楼上!!!!!!!!!!!!!
我现在准备编红外互连游戏所以先介绍一下,希望有兴趣的朋友一起编
因为lava好像不支持call和poke所以现在就在basic上做,汇编我在学,
应该会有像样的游戏的
我也没什么经验,所以都是自己设计的框架,有更好的请大家指出一起分享
互连游戏的主要结构是一个完整的游戏代码和数据发送接受判断程序,
下面我就简单介绍一下
1.过程:
接受数据和发送数据不能同步进行的,所以有先后如
甲机:运行------等待连线------发送数据------接受数据-----运行
乙机:运行------等待连线------接受数据------发送数据-----运行
这样就完成了一个简单的数据交互过程
2.框架.
有人会想,这样不是要两个不同的程序??
其实不用,你只要设定机号就可以了,就像英雄坛说和我的豪斯网络版,首先要选择你做主机还是对方是,如
在我的豪斯里如果你在进入的时候选择了庄家,那么你的变量TAI就=0也就是说在接下去的程序运行中你都是先发送后接受,而如果你是选择闲家,那么你的变量TAI就=1也就是说你是先接受后发送
例
甲机 定义TAI值
甲机 运行-----ON TAI+1 GOTO 庄家,闲家
-----庄家 GOSUB 连线:GOSUB 发送:GOSUB 接受-----运行
-----闲家 GOSUB 连线:GOSUB 接受:GOSUB 发送-----运行
运行-------------
这样就分TAI值不同成了两个分区
如果乙机同时定义另外的TAI值就可以完成双机数据交换了!!!!
下面就是发送和接受等的代码:
1150 REM连线准备
1160 DATA 0,074,01,96,0,0,0,0,176,240,17,0,0
1170 FOR I=5880 TO 5892
1180 READ D
1190 POKE I,D
1200 NEXT I
1210 POKE 3840,176
1220 POKE 3841,240
1230 POKE 3842,017
1240 POKE 3843,000
1250 POKE 3844,000
1260 CALL 5880:S$="":P$=""
发送:
1350 SO=0:SCK$=" "
1351 FOR SB=1 TO SA
1352 SC=PEEK(59)/2
1353 IF INT(SC)=SC THEN GOTO 1356
1354 SCK$=RIGHT$(SCK$,2)+CHR$(PEEK(58))
1355 IF SCK$="RDY" THEN SO=1:SB=SA
1356 NEXT SB:RETURN
1400 REM发送等待
1410 CALL 5880
1420 SA=4000
1430 GOSUB 1350
1440 IF SO=0 THEN TITI$="双机发送失败":GOSUB 1100:A$=INKEY$:GOTO (主界面)
1445 RETURN
1110 CLS:LOCATE 3,5:PRINT TITI$:LOCATE 2,5:PRINT ""
1120 LOCATE 4,5:PRINT ""
1130 BOX 28,12,131,67:BOX 27,11,132,68
1140 RETURN
1280 FOR SZ=1 TO 95:NEXT SZ:RETURN
1290 SA=LEN(S$)
1291 FOR SB=1 TO SA
1292 POKE 58,ASC(MID$(S$,SB,1))
1293 FOR SC=1 TO 40
1294 NEXT SC:NEXT SB:POKE 58,0:RETURN
1300 REM发送过程
1301 CALL 5880
1310 GOSUB 1280
1320 S$="RDY"+P$
1330 GOSUB 1290
1340 RETURN
1350 SO=0:SCK$=" "
1351 FOR SB=1 TO SA
1352 SC=PEEK(59)/2
1353 IF INT(SC)=SC THEN GOTO 1356
1354 SCK$=RIGHT$(SCK$,2)+CHR$(PEEK(58))
1355 IF SCK$="RDY" THEN SO=1:SB=SA
1356 NEXT SB:RETURN
1449 FOR SZ=1 TO 95:NEXT SZ:RETURN
1450 POKE 58,82:GOSUB 1449
1451 POKE 58,68:GOSUB 1449
1452 POKE 58,89:RETURN
1500 REM接收等待
1510 SO=0:T=30
1520 WHILE T>0 AND SO=0
1530 CALL 5880
1535 GOSUB 1450
1540 CALL 5880
1550 SA=100
1560 GOSUB 1350
1570 T=T-1
1580 WEND
1590 IF SO<>1 THEN TITI$="双机接收失败":GOSUB 1100:A$=INKEY$:GOTO 340
1595 RETURN
1600 REM接收过程
1610 S$=""
1620 IF PEEK(199)=241 THEN GOTO 1650
1630 SA=PEEK(59)/2:IF INT(SA)=SA THEN GOTO 1620
1640 SB=PEEK(58):IF SB=0 THEN GOTO 1660 ELSE S$=S$+CHR$(SB):GOTO 1620
1650 S$="":POKE 199,13
1660 RETURN
这样可能比较乱:
我就把我写的一段程序贴上来吧:
30 GRAPH:CLS:A$="对战":B$="豪斯"
35 FOR I=1 TO 5:CLS
40 LOCATE 3,I:PRINT A$:LOCATE 3,18-I:PRINT B$:FOR A=1 TO 100:NEXT A:NEXT I
45 X=80:Y=40
50 FOR I=1 TO 33 STEP 15
60 BOX 1,1,160,80,1,0:PRINT "";:LINE 35+I,40,79,I:LINE 80,I,125-I,40:LINE 35+I,40,79,80-I
70 LINE 80,80-I,125-I,40
80 FOR A=1 TO 80:NEXT A:NEXT I
90 LOCATE 3,10:PRINT "vs"
100 FOR I=30 TO 80
110 DRAW I,51:DRAW I,53:DRAW I,29:DRAW I,27
120 DRAW 160-I,51:DRAW 160-I,53:DRAW 160-I,29:DRAW 160-I,27:NEXT I
130 FOR I=1 TO 800:NEXT I
140 BOX 30,27,130,53,1,1
150 FOR I=1 TO 25 STEP 5
160 CLS:BOX 30+I,27-I/2,130-I,53-I,1,1:FOR A=1 TO 90:NEXT A:NEXT I
161 FOR I=1 TO 35 STEP 5
162 CLS:BOX 55-I,12,105+I,34,1,1:FOR A=1 TO 60:NEXT A:NEXT I
170 CLS:LOCATE 2,4:PRINT "对战豪斯网络版"
180 BOX 22,13,137,33:BOX 20,11,139,35:BOX 19,10,140,36:Z$(3)="账号通讯"
190 Z$(1)="进入游戏":Z$(2)="注册账号":Z$(4)="退出游戏":LOCATE 4,7:PRINT "进入游戏":Z=1
195 LINE 46,65,114,65:LINE 46,45,114,45
200 K=ASC(INKEY$)
210 IF K=20 THEN Z=Z-1 :GOTO 250
220 IF K=21 THEN Z=Z+1 :GOTO 250
230 IF K=13 THEN GOTO 300
240 BEEP:GOTO 200
250 IF Z>4 THEN Z=1 GOTO 270
260 IF Z<1 THEN Z=4 GOTO 270
270 FOR I=47 TO 63
280 LINE 48,I,112,I:NEXT I:FOR I=47 TO 63:LINE 48,I,112,I,0:FOR II=1 TO 10:NEXT II:NEXT I
290 LOCATE 4,7:PRINT Z$(Z):GOTO 200
300 ON Z GOTO 310,320,330,340
310 GOSUB 350:GOSUB 400:GOTO 450//进入游戏
320 GOTO 500://设账号
330 GOTO 1700://传
340 POKE 199,166:END
341 END
350 CLS:LOCATE 2,5:PRINT "账号:";:LOCATE 4,5:PRINT "密码:";
360 BOX 74,14,140,34:BOX 74,46,140,66:BOX 20,10,140,70:BOX 19,9,141,71
370 LOCATE 2,11:INPUT "*";NAME$:LOCATE 4,11:INPUT "*";WORD$
380 RETURN
400 REM密码
401 OPEN NAME$+"-hs" FOR RANDOM AS#1:CLOSE#1
410 IF LOF(1)<>0 THEN GOTO 420 ELSE 411
411 LOCATE 3,5:PRINT "账号不存在!!":A$=INKEY$:GOTO 170
420 OPEN NAME$+"-hs" FOR INPUT AS#1
430 INPUT#1,MIN$,MIM$,MONEY:CLOSE#1
440 IF MIM$<>WORD$ THEN LOCATE 3,5:PRINT "密码错误!!":A$=INKEY$:GOTO 170
445 RETURN
450 GOTO 600://进入
500 CLS:LOCATE 2,6:PRINT "*您的昵称*":BOX 30,12,130,65:BOX 35,45,125,65:BOX 29,11,131,66
505 LOCATE 4,6:INPUT "*";MIN$
510 GOSUB 350
520 OPEN NAME$+"-hs" FOR RANDOM AS#1:CLOSE#1
530 IF LOF(1)=0 THEN GOTO 550
540 LOCATE 3,5:PRINT "账号已存在!!":A$=INKEY$:GOTO 500
550 MONEY=2000:MIM$=WORD$:OPEN NAME$+"-hs" FOR OUTPUT AS#1
560 WRITE#1,MIN$,MIM$,MONEY:CLOSE#1
570 LOCATE 3,5:PRINT "新建成功!!":A$=INKEY$:CLS:CLEAR:GOTO 170
600 CLS:LOCATE 2,3:PRINT MIN$
610 LOCATE 3,3:PRINT "$";MONEY:BOX 10,12,90,50:BOX 9,11,91,51
620 LOCATE 3,15:PRINT "庄家":LOCATE 4,15:PRINT "闲家"
630 BOX 108,28,147,67:BOX 107,27,148,68:BOX 112,32,143,47,1,2:ZHU=0
640 K=ASC(INKEY$)
650 IF K=13 THEN GOTO 1000://主线
660 BOX 112,32,143,63,1,2:ZHU=ABS(ZHU-1):GOTO 640
1000 TAI=ZHU+1:TITI$="正在连线!..."
1010 GOSUB 1100:GOSUB 1150
1020 ON TAI GOTO 1030,1040
1030 REM庄家
1031 P$=MIN$:GOSUB 1400
1032 GOSUB 1300:P$=STR$(MONEY):GOSUB 1400:GOSUB 1300
1033 GOSUB 1500:GOSUB 1600:TMIN$=S$:GOSUB 1500:GOSUB 1600:TMONEY=VAL(S$):GOTO 2000
1040 REM闲家
1041 GOSUB 1500:GOSUB 1600:TMIN$=S$:GOSUB 1500:GOSUB 1600:TMONEY=VAL(S$)
1042 P$=MIN$:GOSUB 1400
1043 GOSUB 1300:P$=STR$(MONEY):GOSUB 1400:GOSUB 1300:GOTO 2000
1100 REM状态
1110 CLS:LOCATE 3,5:PRINT TITI$:LOCATE 2,5:PRINT ""
1120 LOCATE 4,5:PRINT ""
1130 BOX 28,12,131,67:BOX 27,11,132,68
1140 RETURN
1150 REM连线准备
1160 DATA 0,074,01,96,0,0,0,0,176,240,17,0,0
1170 FOR I=5880 TO 5892
1180 READ D
1190 POKE I,D
1200 NEXT I
1210 POKE 3840,176
1220 POKE 3841,240
1230 POKE 3842,017
1240 POKE 3843,000
1250 POKE 3844,000
1260 CALL 5880:S$="":P$=""
1270 RETURN
1280 FOR SZ=1 TO 95:NEXT SZ:RETURN
1290 SA=LEN(S$)
1291 FOR SB=1 TO SA
1292 POKE 58,ASC(MID$(S$,SB,1))
1293 FOR SC=1 TO 40
1294 NEXT SC:NEXT SB:POKE 58,0:RETURN
1300 REM发送过程
1301 CALL 5880
1310 GOSUB 1280
1320 S$="RDY"+P$
1330 GOSUB 1290
1340 RETURN
1350 SO=0:SCK$=" "
1351 FOR SB=1 TO SA
1352 SC=PEEK(59)/2
1353 IF INT(SC)=SC THEN GOTO 1356
1354 SCK$=RIGHT$(SCK$,2)+CHR$(PEEK(58))
1355 IF SCK$="RDY" THEN SO=1:SB=SA
1356 NEXT SB:RETURN
1400 REM发送等待
1410 CALL 5880
1420 SA=4000
1430 GOSUB 1350
1440 IF SO=0 THEN TITI$="双机发送失败":GOSUB 1100:A$=INKEY$:GOTO 340
1445 RETURN
1449 FOR SZ=1 TO 95:NEXT SZ:RETURN
1450 POKE 58,82:GOSUB 1449
1451 POKE 58,68:GOSUB 1449
1452 POKE 58,89:RETURN
1500 REM接收等待
1510 SO=0:T=30
1520 WHILE T>0 AND SO=0
1530 CALL 5880
1535 GOSUB 1450
1540 CALL 5880
1550 SA=100
1560 GOSUB 1350
1570 T=T-1
1580 WEND
1590 IF SO<>1 THEN TITI$="双机接收失败":GOSUB 1100:A$=INKEY$:GOTO 340
1595 RETURN
1600 REM接收过程
1610 S$=""
1620 IF PEEK(199)=241 THEN GOTO 1650
1630 SA=PEEK(59)/2:IF INT(SA)=SA THEN GOTO 1620
1640 SB=PEEK(58):IF SB=0 THEN GOTO 1660 ELSE S$=S$+CHR$(SB):GOTO 1620
1650 S$="":POKE 199,13
1660 RETURN
1700 CLS:LOCATE 2,5:PRINT " 操 作 选 择":LOCATE 4,7:PRINT "发送 接收":XUAN=0
1710 BOX 28,12,139,67:BOX 27,11,140,68:BOX 40,44,127,67:BOX 44,48,83,63,1,2
1720 K=ASC(INKEY$)
1730 IF K=13 THEN GOTO 1750
1740 XUAN=ABS(XUAN-1):BOX 44,48,123,63,1,2:GOTO 1720
1750 XXUAN=XUAN+1:GOSUB 1150
1760 ON XXUAN GOTO 1770,1810
1770 GOSUB 350:GOSUB 400:
1780 TITI$="账号发送!...":GOSUB 1100
1790 P$=NAME$:GOSUB 1400:GOSUB 1300:P$=MIN$:GOSUB 1400:GOSUB 1300
1795 P$=MIM$:GOSUB 1400:GOSUB 1300:P$=STR$(MONEY)
1800 GOSUB 1400:GOSUB 1300:TITI$="账号发送成功":GOSUB 1100:A$=INKEY$:GOTO 340
1810 TITI$="账号接收!...":GOSUB 1100
1820 GOSUB 1500:GOSUB 1600:NAME$=S$:GOSUB 1500:GOSUB 1600:MIN$=S$:GOSUB 1500:GOSUB 1600
1830 MIM$=S$:GOSUB 1500:GOSUB 1600:MONEY=VAL(S$)
1835 CALL 5880:FOR I=1 TO 500:NEXT I
1840 OPEN NAME$+"-hs" FOR RANDOM AS#1:CLOSE#1
1850 IF LOF(1)<>0 THEN GOTO 1890
1860 OPEN NAME$+"-hs" FOR OUTPUT AS#1
1870 WRITE#1,MIN$,MIM$,MONEY:CLOSE#1:TITI$="账号接收成功"
1880 A$=INKEY$:GOTO 340
1890 TITI$="覆盖原账号/Y":GOSUB 1100
1900 K$=INKEY$
1910 IF K$="y" THEN GOTO 1860
1920 TITI$="未覆盖原账号":GOSUB 1100:A$=INKY$:GOTO 340
2000 PRINT TMIN$,TMONEY,"vs",MIN$,MONEY
这是画面的代码:
1 TAI=1:XI=2:MIN$="信志":MONEY=2000:TMIN$="雨晴":TMONEY=2000
10 GRAPH:PRINT "XIPAI"
20 DIM PAI$(52),HUA$(52)
30 OPEN "hssysa" FOR INPUT AS#1
40 FOR I=1 TO 52
50 INPUT#1,PAI$(I),HUA$(I):NEXT I
59 PRINT "QUPAI"
60 FOR I=1 TO 10
70 PAIA(I)=INT(RND(1)*100)
80 IF PAIA(I)<1 OR PAIA(I)>52 THEN GOTO 70
90 IF I>1 THEN GOTO 100 ELSE 130
100 FOR S=1 TO I-1
110 IF PAIA(I)=PAIA(S)THEN GOTO 70
120 NEXT S
130 NEXT I
140 FOR I=1 TO 10:PRINT PAI$(PAIA(I));HUA$(PAIA(I));",";
150 NEXT I
160 A$=INKEY$:CLS
161 PS=1:RO=1:ON TAI GOTO 162,165:
162 GOSUB 250:GOSUB 300:LOCATE 4,6:PRINT WP$(RO):LOCATE 5,6:PRINT WH$(RO);
163 BOX 38,48,58,80:GOSUB 240:BOX 38,0,58,31:GOSUB 240:GOTO 170
165 GOSUB 300:GOSUB 250:BOX 38,0,58,31:GOSUB 240:LOCATE 4,6:PRINT WP$(RO)
166 LOCATE 5,6:PRINT WH$(RO);:BOX 38,48,58,80:GOSUB 240:GOTO 170
170 PS=3:FOR ROUND=2 TO 5
180 ON TAI GOTO 184,190
181 GOSUB 240:NEXT ROUND:A$=INKEY$:CLS:GOTO 60
184 RO=ROUND:HH=(RO+1)*3:GOSUB 250:GOSUB 300:GOSUB 500
185 LOCATE 4,HH:PRINT WP$(RO)
186 LOCATE 5,HH:PRINT WH$(RO);:GOSUB 540:GOSUB 240:LOCATE 1,HH:PRINT TP$(RO)
187 LOCATE 2,HH:PRINT TH$(RO):GOSUB 520:BOX XX,48,XX+20,80
188 GOTO 181
190 RO=ROUND:HH=(RO+1)*3:GOSUB 300:GOSUB 250:GOSUB 500
191 LOCATE 1,HH:PRINT TP$(RO)
192 LOCATE 2,HH:PRINT TH$(RO);:GOSUB 520:GOSUB 240:LOCATE 4,HH:PRINT WP$(RO)
193 LOCATE 5,HH:PRINT WH$(RO);:GOSUB 540:BOX XX,0,XX+20,31
194 GOTO 181
240 FOR I=1 TO 500:NEXT I:RETURN
250 REM定我牌
260 WP$(RO)=PAI$(PAIA(PS)):WH$(RO)=HUA$(PAIA(PS)):WP(RO)=PAIA(PS):PS=PS+1
270 RETURN
300 REM定他牌
310 TP$(RO)=PAI$(PAIA(PS)):TH$(RO)=HUA$(PAIA(PS)):TP(RO)=PAIA(PS):PS=PS+1
320 RETURN
498 SWAP TAI,XI
499 RETURN
500 IF PAIA(PS-2)<PAIA(PS-1)THEN GOSUB 498
510 RETURN
520 REM上边框
530 FOR I=1 TO RO-1:XX=((I+1)*3-1)*8-2:BOX XX,0,XX+20,31:BOX XX,48,XX+20,80:NEXT I:
535 XX=((RO+1)*3-1)*8-2:BOX XX,0,XX+20,31
536 RETURN
540 REM下边框
550 FOR I=1 TO RO-1:XX=((I+1)*3-1)*8-2:BOX XX,0,XX+20,31:BOX XX,48,XX+20,80:NEXT I:
555 XX=((RO+1)*3-1)*8-2:BOX XX,48,XX+20,80
560 RETURN
这是data文件的代码:
10 REM牌面
20 DATA 2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8
30 DATA 9,9,9,9,10,10,10,10,J,J,J,J,Q,Q,Q,Q,K,K,K,K,A,A,A,A
40 REM花色
50 DATA,,,,,,,,,,,,,,,,,,,,,,,,,,,
60 DATA,,,,,,,,,,,,,,,,,,,,,,,,,,,
70 DIM PAI$(52),HUA$(52):FOR I=1 TO 52
80 READ A$:PAI$(I)=A$
90 NEXT I
100 FOR I=1 TO 52
110 READ A$:HUA$(I)=A$
120 NEXT I
130 OPEN "hssysa" FOR OUTPUT AS#1
140 FOR I=1 TO 52
150 WRITE#1,PAI$(I),HUA$(I)
160 NEXT I
170 CLOSE#1
花色显示不出来,我放附件里吧!!在楼上!!!!!!!!!!!!!
发表评论
-
不知JavaEye中还有没有用过文曲星编程的
2007-04-13 15:59 4476在JavaEye中,因为这几篇文曲星编程的文章认识了taowe ... -
调用文曲星里的英语词典中的语音(游戏发音处理)
2006-12-22 12:37 3057调动星星里的英语语音! 作者:ISAILOR-HB N ... -
在BAS文件中调用另一个BAS的方法(动态字节码加载)
2006-12-22 12:34 3982在BAS文件中调用另一个BAS的方法 原作者:houjie ... -
[原创]键盘映射
2006-12-22 12:33 3036键盘映射(按键连续操作) 映射是指按住键后程序连续操作。 ... -
RPG引擎原理讲解
2006-12-22 12:33 5072RPG引擎原理讲解! 作者:杨芹勍[Coolsoft(R)] ... -
系统内存地址PEEK值大全
2006-12-22 12:30 7878NC1020系列PEEK值 NC1020系列(包括NC102 ... -
[原创]中国象棋源码(主要实现自动走)
2006-12-22 12:26 7212中国象棋 中国象棋简介: 作者:梁飞(网名:o_o) ... -
智能五子棋 (NC1020型用)
2006-12-22 12:25 2792智能五子棋 (NC1020型用) 此算法是friday所写, ... -
四则运算(官方程序)
2006-12-22 12:21 2336四则运算(官方程序) ****四则运算**** ]10 C ... -
批量法作图(速度奇迹)
2006-12-22 12:21 3008批量法作图(速度奇迹) 余海林的创始原帖: 批量发送字 ... -
时间显示(小晶体管)控制
2006-12-22 12:20 3476时间显示(小晶体管)控制 首先,来看看时间显示的小程序(NC ... -
图像快速载入
2006-12-22 12:19 2306图像快速载入 一秒内 ... -
批量法滚屏的详解
2006-12-22 12:18 2109批量法滚屏的详解 先得了解文曲星的屏幕,为159*80,存图 ... -
文曲星读屏原理
2006-12-22 12:17 2199读屏原理 读点法原理 ... -
[原创]简易五子棋
2006-12-22 12:15 3100简易五子棋 10 GRAPH:CLS:FOR X= 4 TO ... -
RPG“伏魔剑”源程序
2006-12-22 12:15 2871RPG“伏魔剑”源程序 0 : 1 GRAPH 2 DI ... -
[原创]文曲星GVB - 俄罗斯方块
2006-12-12 21:03 4084好久没写GVB了,都快忘记了, 上一段时间抽空写了个俄罗斯方块 ... -
高中时代的回忆
2006-12-09 19:17 5372不知还有没有用文曲星电子词典编程的朋友... 回忆那个只有16 ...
相关推荐
红外线通信协议,全称Infrared Data Association (IRDA),是一种短距离无线通信技术,主要应用于设备间的点对点通信,如手机、电脑、打印机等之间的数据交换。红外线通信利用的是红外光谱中750nm至1mm波长的电磁波,...
红外线局域网适合短距离通信,而射频因其较大的覆盖范围和较低的自然背景噪声,提供了更高的通信安全性。 无线局域网通常采用扩频微波技术,特别是直接序列扩频调制方法,因为这种技术具有抗干扰、抗噪声、抗衰落、...
在实际应用中,无线局域网可以通过多种网络结构实现互连,如网桥连接型、基站接入型、HUB接入型和无中心结构。例如,某单位可以通过无线局域网将总部与分布在不同地点的分部连接起来,其中中心站点作为网络的核心,...
本章主要讨论了局域网中常见的有线传输介质,如双绞线、同轴电缆和光纤,以及无线传输介质,如无线电波、微波和红外线。同时,还详细介绍了网卡、集线器、交换机、路由器等网络连接设备的功能、工作原理和应用场景。...
该标准最初定义了三种物理层规范:2.4GHz频段的跳频扩频(FHSS)、2.4GHz频段的直接序列扩频(DSSS)以及红外线(IR)。这三种物理层都支持1Mbps和2Mbps的数据传输速率,并遵循同一MAC层规范。 近年来,802.11标准已经...
在紫外线消毒灯控制系统中,FPGA用于处理传感器信号、控制无线发射模块、显示模块以及消毒灯的开关控制等。 知识点二:紫外线消毒技术 紫外线消毒技术是利用特定波长范围内的紫外线破坏微生物的DNA或RNA结构,达到...
红外通信协议在无线通信领域中占有一定的地位,尤其是在便携式设备的互连中。然而,随着蓝牙、Wi-Fi等无线通信技术的发展,红外通信在速率、覆盖范围和抗干扰能力上显得相对局限。尽管如此,在某些低功耗、低成本和...
红外通信技术,作为一种利用红外线进行信息传输的通信方式,被广泛应用于短距离、低功耗的数据交换场景。其核心在于利用红外线的特性,通过红外发射和接收系统完成信息的发送与接收。这一过程涉及对红外辐射源的调制...
本文详细介绍了移动无线网络中的关键技术与概念,包括无线通信的特点、无线网络的分类、无线传输媒体及其方向性、无线信号的构造类型、微波与无线电波的区别、红外线和光波的应用场景,以及天线的工作原理和传播方式...
本研究项目提出了基于物联网体系结构的家庭智能自主结构,其特点是以高频电力载波为通信总线,以Internet和GSM为远程控制基础,以RF无线射频技术为近程控制手段,结合红外遥控、热释电遥感和视频监控组成闭环控制...
- **典型结构**:采用双绞线总线结构,各网络节点可通过总线获得供电(24V/DC),同时实现节点间的无极性、无拓扑逻辑限制的互连和通信。 现场总线控制系统主要包括三个基本组成部分:电源供应器、双绞线和功能模块...
在个人电脑和移动设备间,蓝牙技术能够实现高效的无线通信和数据传输,比红外线传输更具优势,因为蓝牙不受视线限制,也不受障碍物影响,且能更好地控制信息传输速度。蓝牙技术已经成为一种广泛接受的工业标准,吸引...
- **红外通信(IrDA)**:利用红外线进行数据传输的技术,广泛应用于消费电子产品。 - **超宽带(UWB)**:提供高速数据传输能力的无线技术,具有精确的位置定位能力。 - **电子标签(RFID)**:用于识别物品的无线...
网络传输介质包括有线(如双绞线、同轴电缆、光纤)和无线介质(如卫星、红外、微波通信)。信息访问控制有多种机制,如查询、令牌环、令牌总线、CSMA/CD、信息槽等。信息交换技术则分为线路交换和存储转发交换,后...
与红外线传输相比,蓝牙技术具有更广泛的接受度,克服了红外必须直线对准、传输速度难以控制、设备兼容性差等问题。目前,全球已有大量公司加入蓝牙特别兴趣小组(SIG),共同推进蓝牙技术标准的发展。 【蓝牙系统...
按照传输介质,局域网可被划分为有线网和无线网,有线网包括双绞线、同轴电缆和光纤网,而无线网则使用红外或微波通信。有线网还可以细分为基带网和宽带网,基带网主要使用同轴电缆或双绞线,而宽带网则使用不同规格...
1. FPGA的基础知识:FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种可以通过编程来配置的半导体设备,其内部包含大量可编程逻辑单元和可编程互连结构。FPGA可应用于各种领域,如数字信号处理、通信...
3. **无线传输媒介**:手机和电脑之间可以通过无线媒介如Wi-Fi(基于红外线或微波频段)进行互连,其中红外线是常见的无线传输方式之一。 4. **网络拓扑结构**:网络拓扑结构反映网络中设备的连接形式,例如星型...
无线局域网的技术结构主要涉及扩频、红外和窄带三种发送及接收技术。其中,扩频技术分为直接序列扩频(DS)和跳频(FH)扩频。DS扩频技术结合了CDMA,能有效利用2.4GHz的开放频段,但可能面临微波噪声问题。相比之下...
6. **串行通信**:UART(通用异步收发传输器)或SPI(串行外围接口)、I2C(集成电路互连总线)等协议用于与其他模块或设备(如无线模块)通信,实现远程控制或与其他机器人协同工作。 7. **内存管理**:了解如何在...