发牌小游戏
;发牌排序游戏 假定有13张片A~K,发牌规则是将这一叠牌最上面的一张移到最下面,发出一张牌;再将最上面一张移到最下面,再出一张牌,依此类推,直到所有的牌全部发完,要求牌按A~K的顺序发出
;请设计程序将牌排序(defun c:tt()
(setq list1 '(A 2 3 4 5 6 7 8 9 10 J Q K))
(setq list1 (reverse list1))
(setq list2 '())
(while list1
(setq list2 (cons (car list1) list2))
(setq list2 (cons (car (reverse list2)) (reverse (cdr (reverse list2)))))
(setq list1 (cdr list1))
)
(prin1 list2)
(princ)
)
执行结果:
(7 A Q 2 8 3 J 4 9 5 K 6 10)
我们依此类推,完整的一副牌该如何排序?如果往下移两张牌后出一张牌,又该如何排序?
可以给家里的小孩子玩这个游戏。
动态显示一下
凭着一股热情学习了几个月的lisp,但尴尬地发现在现实工作中几乎用不到这些。因此,不得不调整学习思路。
一方面,让需求来推动自己学习。另一方面,将lisp用到兴趣爱好或游戏中。比如这个:(defun c:tt (/ v1 v2 v3 p1 p2 p3 i n)
(setq v1 (getvar "osmode"))
(setq v2 (getvar "cmdecho"))
(setq v3 (getvar "blipmode"))
(setq p1 '(0 0))
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setqlist1 (list "潮随暗浪雪山倾"
"远浦渔舟钓月明"
"桥对寺门松径小"
"槛当泉眼石波清"
"迢迢绿树江天晓"
"霭霭红霞海日睛"
"遥望四边云接水"
"碧峰千点数鸿轻"
)
)
(command "zoom"
(list -10 -10)
(list 210 85)
)
(command "style" "hwfs" "华文仿宋" "0" "1.0" "0" "N" "N")
(setqi 0
n 0
)
(while (< i 8)
(while (< n 7)
(setq p2 (list (+ (* i 10) 7) (+ 5 (* n 10)))) ;倒序阅读
(setq p3 (list (+ 75 (- 100 (* i 10))) (+ (- 0 (* n 10)) 65))) ;正序阅读
(command "text" "m" p2 3.5 0
(substr (nth i list1) (+ 1 (* 2 n)) 2)
)
(command "text" "m" p3 3.5 0
(substr (nth i list1) (+ 1 (* 2 n)) 2)
)
(setq n (1+ n))
)
(setq n 0)
(setq i (1+ i))
)
(setvar "osmode" v1)
(setvar "cmdecho" v2)
(setvar "blipmode" v3)
(princ)
) 神奇,点赞 这几天开始学习VBA,来一个有斗、点数概率计算。Sub tt1()
Dim i As Integer, j As Integer, n As Integer, k As Integer, l As Integer
Dim bin_1 As Boolean
Dim ary_1(1 To 5) As Integer
For n = 1 To 1000
bin_1 = False
For i = 1 To 10
For j = 1 To 5
ary_1(j) = Application.WorksheetFunction.RandBetween(0, 9)
Next j
k = ary_1(Cells(i, 5).Value) + ary_1(Cells(i, 6).Value) + ary_1(Cells(i, 7).Value)
If k Mod 10 = 0 Then
bin_1 = True
l = ary_1(Cells(i, 8).Value) + ary_1(Cells(i, 9).Value)
If l > 10 Then
l = l - 10
End If
Exit For
End If
Next i
If bin_1 Then
Cells(2, 2).Value = Cells(2, 2).Value + 1
Cells(l + 3, 2).Value = Cells(l + 3, 2).Value + 1
Else
Cells(1, 2).Value = Cells(1, 2).Value + 1
End If
Next n
End Sub
页:
[1]