⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tictac.bas

📁 smallbasic for linux
💻 BAS
字号:
#!/usr/local/bin/sbrun -g''	TIC-TAC-TOE''	SmallBASIC 0.5.6 example'DIM MAT(9), PW(8), ST(3)LABEL RESTARTFOR I=1 TO 9	MAT(I)=0NEXTcls? cat(1);"Tic-Tac-Toe";cat(0)? chr$(27)+"[92m"? "A SmallBASIC example"at 0,130? "X=USER, O=CPU" ? "Are you want to play first"; INPUT selWINNER=0IF UCASE$(LEFT$(sel,1))="Y" THEN	PLAYER=-1ELSE 	PLAYER=1FI' startWHILE 1	IF PLAYER=-1 		GOSUB DISPLAY		GOSUB USER	ELSE		GOSUB COMPUTER	FI	GOSUB CHECK	PLAYER=-PLAYER	IF WINNER THEN 1000WEND1000 ' EXIT LOOPGOSUB DISPLAYat 0,130:? cat(1);IF WINNER=-1	? "YOU WIN!"ELIF WINNER=1	? "I WIN!"ELSE	? "TIE!"FI? cat(0)at 0,148INPUT "PLAY AGAIN?",SELIF UCASE$(LEFT$(SEL,1))="Y" THEN GOTO RESTARTEND'===================LABEL USERpen onwhile 1	if pen(0)		x=pen(4):y=pen(5)		p=int((x-20)/40)+1		if y>80			p=p+6		elif y>40			p=p+3		fi		if mat(p)=0 then 3000 else beep	fiwend3000 ' exit whilepen offMAT(P)=PLAYERRETURN'===================LABEL COMPUTERPLAYER=1GOSUB Check' WINNER MOVEFOR I=1 TO 8	IF PW(I)=2		GOSUB SELPOS		GOTO CCFIN	FINEXT' DEFENCE MOVEFOR I=1 TO 8	IF PW(I)=-2		GOSUB SELPOS		GOTO CCFIN	FINEXT'' SIMPLE MOVE - THIS LETS USER TO WIN' BECAUSE IT DOES NOT CALCULATE THE' FREE CELLS'IF MAT(5)=0  P=5ELSE  FOR I=1 TO 9    IF MAT(I)=0 THEN      P=I      GOTO CCFIN    FI  NEXTFILABEL CCFINMAT(P)=PLAYERRETURN'===================LABEL SELPOSIF I < 4	ST(1)=(I-1)*3+1	ST(2)=(I-1)*3+2	ST(3)=(I-1)*3+3ELIF I < 7	ST(1)=(I-3)	ST(2)=(I-3)+3	ST(3)=(I-3)+6ELIF I=7	ST(1)=1:ST(2)=5:ST(3)=9ELSE	ST(1)=3:ST(2)=5:ST(3)=7FIIF MAT(ST(1))=0	P=ST(1)ELIF MAT(ST(2))=0	P=ST(2)ELSE	P=ST(3)FIRETURN'===================LABEL CheckFOR i=1 TO 3	PW(i)=MAT((i-1)*3+1)	PW(i)=PW(i)+MAT((i-1)*3+2)	PW(i)=PW(i)+MAT((i-1)*3+3)	PW(i+3)=MAT(i)+MAT(i+3)+MAT(i+6)NEXTPW(7)=MAT(1)+MAT(5)+MAT(9)PW(8)=MAT(3)+MAT(5)+MAT(7)FOR i=1 TO 8	IF PW(i)=-3 THEN WINNER=-1	IF PW(i)= 3 THEN WINNER=1NEXTIF WINNER=0 THEN 	CNT=0	FOR i=1 TO 9		IF MAT(i) THEN CNT=CNT+1	NEXT	IF CNT=9 THEN WINNER=999FIRETURN '===================LABEL DISPLAYclsrect 0,0,160,140 color 15 filledline 20,40,140,40line 20,80,140,80line 60,0,60,120line 100,0,100,120FOR N=1 TO 9 STEP 3	y=int(n/3)*40+20	FOR O=0 TO 2		x=(o+1)*40		IF MAT(O+N)=1			circle x,y,10		ELIF MAT(O+N)=-1			line x-10,y-10,x+10,y+10			line x+10,y-10,x-10,y+10		FI	NEXTNEXTRETURN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -