Advertisement
TimJSwan

Tim Swan's CHESS in ti-Basic

Mar 28th, 2015
1,429
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.25 KB | None | 0 0
  1. DelVar L₁
  2. DelVar L₂
  3. ClrHome
  4. For(X,0,7
  5. For(Y,1,8
  6. If not(fPart((Y+X)/2)
  7. Output(Y,2X+1,"[]
  8. End
  9. End
  10. Output(1,1,"+R+N+B+Q+K+B+N+R+P+P+P+P+P+P+P+P
  11. Output(7,1,"-P-P-P-P-P-P-P-P-R-N-B-Q-K-B-N-R
  12. DelVar [A]
  13. {8,8→dim([A]
  14. For(X,1,8
  15. 0.1→[A](7,X
  16. 1.1→[A](2,X
  17. End
  18. For(X,1,3
  19. (X+1)/10→P
  20. 1+P→[A](1,X
  21. 1+P→[A](1,9-X
  22. P→[A](8,X
  23. P→[A](8,9-X
  24. End
  25. 0.5→[A](8,4
  26. 0.6→[A](8,5
  27. 1.5→[A](1,4
  28. 1.6→[A](1,5
  29. If 0:DEBUG
  30. 4→X
  31. 4→Y
  32. X→S
  33. Y→T
  34. 0→Q
  35. While 1
  36. S→N
  37. T→O
  38. [A](O,N→P
  39. P→D
  40. For(B,–1,0
  41. If B
  42. Goto 0
  43. End
  44. Output(T,2S-1,Str1
  45. If D<0
  46. Output(J,2I-1,C
  47. If Q≥1
  48. Then
  49. Output(Y,2X-1,":+")
  50. Else
  51. Output(Y,2X-1,":-")
  52. End
  53. X→S
  54. Y→T
  55. getKey→A
  56. Repeat A
  57. getKey→A
  58. End
  59. If A=24
  60. X-1→X
  61. If A=26
  62. X+1→X
  63. If A=25
  64. Y-1→Y
  65. If A=34
  66. Y+1→Y
  67. If X=9
  68. 1→X
  69. If X=0
  70. 8→X
  71. If Y=9
  72. 1→Y
  73. If Y=0
  74. 8→Y
  75. If A=31 and fPart(Q)
  76. Then
  77. int(Q)→Q
  78. For(B,1,C
  79. L₁(B)→N
  80. L₂(B)→O
  81. [A](O,N)-2→P
  82. P→[A](O,N
  83. For(D,–1,0
  84. If D
  85. Goto 0
  86. End
  87. Output(O,2N-1,Str1
  88. End
  89. J→O
  90. I→N
  91. –[A](J,I→P
  92. P→[A](J,I
  93. For(D,–1,0
  94. If D
  95. Goto 0
  96. End
  97. Output(J,2I-1,Str1
  98. End
  99. If A=21
  100. Then
  101. [A](Y,X→P
  102. If fPart(P) and Q=int(P)
  103. Then
  104. Y→J
  105. X→I
  106. P→Q
  107. 0→C
  108. If fPart(P)=.1P)=.7
  109. Then
  110. If P≥1
  111. Then
  112. If J+1≤8
  113. Then
  114. If not(fPart([A](J+1,I
  115. Then
  116. C+1→C
  117. [A](J+1,I)+2→[A](J+1,I
  118. Output(J+1,2I-1,"*
  119. I→L₁(C
  120. J+1→L₂(C
  121. If fPart(P)=.1
  122. Then
  123. I→N
  124. J+2→O
  125. If O≤8
  126. Then
  127. If not(fPart([A](O,N
  128. Then
  129. For(D,–1,0
  130. If D
  131. Goto 1
  132. End
  133. End
  134. End
  135. End
  136. End
  137. J+1→O
  138. I+1→N
  139. If N≤8
  140. Then
  141. If fPart([A](O,N))
  142. Then
  143. For(D,–1,0
  144. If D
  145. Goto 1
  146. End
  147. End
  148. End
  149. J+1→O
  150. I-1→N
  151. If N≥1
  152. Then
  153. If fPart([A](O,N))
  154. Then
  155. For(D,–1,0
  156. If D
  157. Goto 1
  158. End
  159. End
  160. End
  161. End
  162. Else
  163. If J-1≥1
  164. Then
  165. If not(fPart([A](J-1,I)))
  166. Then
  167. C+1→C
  168. [A](J-1,I)+2→[A](J-1,I)
  169. Output(J-1,2I-1,"*
  170. I→L₁(C
  171. J-1→L₂(C
  172. If fPart(P)=.1
  173. Then
  174. I→N
  175. J-2→O
  176. If O≥1
  177. Then
  178. If not(fPart([A](O,N)
  179. Then
  180. For(D,–1,0
  181. If D
  182. Goto 1
  183. End
  184. End
  185. End
  186. End
  187. End
  188. I+1→N
  189. J-1→O
  190. If N≤8
  191. Then
  192. If fPart([A](O,N)
  193. Then
  194. For(D,–1,0
  195. If D
  196. Goto 1
  197. End
  198. End
  199. End
  200. I-1→N
  201. J-1→O
  202. If N≥1
  203. Then
  204. If fPart([A](O,N))
  205. Then
  206. For(D,–1,0
  207. If D
  208. Goto 1
  209. End
  210. End
  211. End
  212. End
  213. End
  214. Else
  215. If 0:N
  216. If fPart(P)=.3
  217. Then
  218. For(F,–1,1,2
  219. For(B,–2,2,4
  220. I+F→N
  221. J+B→O
  222. For(D,–1,0
  223. If D
  224. Goto 1
  225. End
  226. I+B→N
  227. J+F→O
  228. For(D,–1,0
  229. If D
  230. Goto 1
  231. End
  232. End
  233. End
  234. Else
  235. If 0:K
  236. If fPart(P)=.6
  237. Then
  238. For(B,–1,1
  239. For(F,–1,1
  240. If B
  241. Then
  242. I+B→N
  243. J+F→O
  244. For(D,–1,0
  245. If D
  246. Goto 1
  247. End
  248. End
  249. End
  250. End
  251. Else
  252. If 0:R
  253. If fPart(P)=.2
  254. Then
  255. 0→G
  256. For(F,–1,0
  257. If F
  258. Goto 2
  259. End
  260. Else
  261. If 0:B
  262. If fPart(P)=.4
  263. Then
  264. 1→G
  265. For(F,–1,0
  266. If F
  267. Goto 2
  268. End
  269. Else
  270. If 0:Q
  271. If fPart(P)=.5
  272. Then
  273. For(G,0,2
  274. If G<2
  275. Goto 2
  276. End
  277. Else
  278. Disp 5/0
  279. End
  280. End
  281. End
  282. End
  283. End
  284. End
  285. –[A](J,I→[A](J,I
  286. Output(J,2I-1,C
  287. End
  288. If [A](Y,X)≥2
  289. Then
  290. For(B,1,C
  291. L₁(B)→N
  292. L₂(B)→O
  293. [A](O,N)-2→P
  294. P→[A](O,N)
  295. For(D,–1,0
  296. If D
  297. Goto 0
  298. End
  299. Output(O,2N-1,Str1
  300. End
  301. –[A](J,I)→D
  302. If fPart(D)=.1
  303. D+.6→D
  304. D→[A](Y,X
  305. 0→[A](J,I
  306. int(Q)→Q
  307. not(Q)→Q
  308. I→N
  309. J→O
  310. 0→P
  311. For(D,–1,0
  312. If D
  313. Goto 0
  314. End
  315. Output(J,2I-1,Str1
  316. End
  317. End
  318. End
  319. Lbl 0
  320. abs(P)→P
  321. If P=0=2
  322. Then
  323. If fPart((O+N)/2
  324. Then
  325. "[]"→Str1
  326. If P=2
  327. "*]"→Str1
  328. Else
  329. " "→Str1
  330. If P=2
  331. "* "→Str1
  332. End
  333. End
  334. If P=0=2
  335. End
  336. If P-fPart(P)
  337. Then
  338. If P-fPart(P)≥2
  339. Then
  340. "*→Str1
  341. Else
  342. "+→Str1
  343. End
  344. Else
  345. "-→Str1
  346. End
  347. fPart(P)*10→P
  348. If P=1=7
  349. Str1+"P"→Str1
  350. If P=2
  351. Str1+"R"→Str1
  352. If P=3
  353. Str1+"N"→Str1
  354. If P=4
  355. Str1+"B"→Str1
  356. If P=5
  357. Str1+"Q"→Str1
  358. If P=6
  359. Str1+"K"→Str1
  360. End
  361. Lbl 1
  362. If N≥1 and N≤8 and O≥1 and O≤8
  363. Then
  364. [A](O,N)→P
  365. If (int(P)=not(int(Q)) and fPart(P))P)
  366. Then
  367. C+1→C
  368. N→L₁(C
  369. O→L₂(C
  370. P+2→P
  371. P→[A](O,N
  372. For(E,–1,0
  373. If E
  374. Goto 0
  375. End
  376. Output(O,2N-1,Str1
  377. End
  378. End
  379. End
  380. Lbl 2
  381. For(B,1,8
  382. J+GB→O
  383. I+B→N
  384. If O≤8 and N≤8
  385. Then
  386. For(D,–1,0
  387. If D
  388. Goto 1
  389. End
  390. If fPart([A](O,N))
  391. 8→B
  392. End
  393. End
  394. For(B,1,8
  395. I-B→N
  396. J-GB→O
  397. If N≥1 and O≥1
  398. Then
  399. For(D,–1,0
  400. If D
  401. Goto 1
  402. End
  403. If fPart([A](O,N
  404. 8→B
  405. End
  406. End
  407. For(B,1,8
  408. J+B→O
  409. I-GB→N
  410. If O≤8 and N≥1
  411. Then
  412. For(D,–1,0
  413. If D
  414. Goto 1
  415. End
  416. If fPart([A](O,N
  417. 8→B
  418. End
  419. End
  420. For(B,1,8
  421. J-B→O
  422. I+GB→N
  423. If O≥1 and N≤8
  424. Then
  425. For(D,–1,0
  426. If D
  427. Goto 1
  428. End
  429. If fPart([A](O,N
  430. 8→B
  431. End
  432. End
  433. End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement