忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 徽章 文库 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 615 | 回复: 0

[游戏娱乐] 跨平台ps命令行游戏:《抽一张扑克牌比大小.ps1》 [复制链接]

论坛徽章:
0
发表于 2017-08-07 11:17 |显示全部楼层

《抽一张扑克牌比大小。ps1》是一个命令行ps游戏,写于2014年。那时候,linux版ps还没出。linux版ps大概在2016年8月出的第一版。
是我看了《澳门风云-1》周润发,谢霆锋抽牌比大小后,编写出来的。只是为了菜鸟学二维数组。前两天,我在linux版ps中实验通过。功能完全正常,玩法一样。
结论:win,linux下,ps脚本基本兼容,容易跨平台。


今天,我把它简单加了点注释,分享出来,

注意 :保存成bom+unicode。或bom+utf8文本。

  1. #Requires -Version 3

  2. <#
  3. powershell 命令行 游戏,抽一张比大小。
  4. 先比牌数目大小,相同比花色大小。
  5. 花色从小到大分别为:"♦","♣","♥","♠"
  6. 牌从小到大分别为:"2","3","4","5","6","7","8","9","10","J","Q","K","A"
  7. 命令行界面,没什么华丽的;代码简单,没什么高深的。当然改成图形的也不难。
  8. 趣味游戏而已,助人为恶,不如助人娱乐~

  9. 另:powershell 命令行 麻将 游戏,已经开始构思。
  10. #>


  11. $错误信息 =
  12. @"
  13. 支持powershell 3.0 及以上,请安装最新版powershell。
  14. "@



  15. if ($PSVersionTable.PSVersion.Major -le 2)
  16. {
  17.     write-host $错误信息
  18.     exit 1
  19. }

  20. Write-Warning 'powershell 快捷方式--->属性--->字体:应该选择“tt 新宋体”,否则显示不了方片草花等'


  21. $52张牌 = New-Object  "system.array [][]"  4,13
  22. $52张牌[0][0] = '♦2'
  23. $52张牌[0][1] = '♦3'
  24. $52张牌[0][2] = '♦4'
  25. $52张牌[0][3] = '♦5'
  26. $52张牌[0][4] = '♦6'
  27. $52张牌[0][5] = '♦7'
  28. $52张牌[0][6] = '♦8'
  29. $52张牌[0][7] = '♦9'
  30. $52张牌[0][8] = '♦10'
  31. $52张牌[0][9] = '♦J'
  32. $52张牌[0][10] = '♦Q'
  33. $52张牌[0][11] = '♦K'
  34. $52张牌[0][12] = '♦A'


  35. $52张牌[1][0] = '♣2'
  36. $52张牌[1][1] = '♣3'
  37. $52张牌[1][2] = '♣4'
  38. $52张牌[1][3] = '♣5'
  39. $52张牌[1][4] = '♣6'
  40. $52张牌[1][5] = '♣7'
  41. $52张牌[1][6] = '♣8'
  42. $52张牌[1][7] = '♣9'
  43. $52张牌[1][8] = '♣10'
  44. $52张牌[1][9] = '♣J'
  45. $52张牌[1][10] = '♣Q'
  46. $52张牌[1][11] = '♣K'
  47. $52张牌[1][12] = '♣A'


  48. $52张牌[2][0] = '♥2'
  49. $52张牌[2][1] = '♥3'
  50. $52张牌[2][2] = '♥4'
  51. $52张牌[2][3] = '♥5'
  52. $52张牌[2][4] = '♥6'
  53. $52张牌[2][5] = '♥7'
  54. $52张牌[2][6] = '♥8'
  55. $52张牌[2][7] = '♥9'
  56. $52张牌[2][8] = '♥10'
  57. $52张牌[2][9] = '♥J'
  58. $52张牌[2][10] = '♥Q'
  59. $52张牌[2][11] = '♥K'
  60. $52张牌[2][12] = '♥A'


  61. $52张牌[3][0] = '♠2'
  62. $52张牌[3][1] = '♠3'
  63. $52张牌[3][2] = '♠4'
  64. $52张牌[3][3] = '♠5'
  65. $52张牌[3][4] = '♠6'
  66. $52张牌[3][5] = '♠7'
  67. $52张牌[3][6] = '♠8'
  68. $52张牌[3][7] = '♠9'
  69. $52张牌[3][8] = '♠10'
  70. $52张牌[3][9] = '♠J'
  71. $52张牌[3][10] = '♠Q'
  72. $52张牌[3][11] = '♠K'
  73. $52张牌[3][12] = '♠A'

  74. #$52张牌
  75. $script:当前经验值 = 0
  76. $script:等级 = 0

  77. function pokergame
  78. {
  79.     Write-Host "---【第 $script:游戏次数 场游戏开始】--- "
  80.     [ValidateRange(1,52)][int16]$你选择的牌号 = Read-Host  '输入1----52:'
  81.     if ( ($你选择的牌号 -lt 1) -or ($你选择的牌号 -gt 52) -or ($你选择的牌号 -eq "") )
  82.     {
  83.         Write-Warning  '输入错误 ... '
  84.         Write-Host "---【第 $script:游戏次数 场游戏结束】--- "
  85.     }
  86.     else
  87.     {
  88.         Write-Warning  '开始计算 ... '
  89.         $已经洗完的牌 = $52张牌 | Get-Random   -Count 52
  90.         Start-Sleep -Seconds 1
  91.         $你抽到的牌 = $已经洗完的牌[$($你选择的牌号 - 1)]
  92.         Write-Host "从左到右,你选择了第:【$你选择的牌号】张牌,你抽到的牌为: $你抽到的牌"

  93.         do
  94.         {
  95.             $电脑选择的牌号 = 1..52 | Get-Random
  96.         }
  97.         while ($电脑选择的牌号 -eq $你选择的牌号) #防止重牌

  98.         $电脑抽到的牌 = $已经洗完的牌[$($电脑选择的牌号 - 1)]
  99.         Write-Host "从左到右,电脑选择了第:【$电脑选择的牌号】张牌,电脑抽到的牌为: $电脑抽到的牌"



  100.         #计算$黑桃A位置,并打印到屏幕
  101.         foreach ($temp001 in (0..$($已经洗完的牌.Length - 1))  )
  102.         {
  103.             $temp002 = $已经洗完的牌.GetValue($temp001)
  104.             if ($temp002 -eq '♠A')
  105.             {
  106.                 $黑桃A位置 = $temp001 + 1
  107.                 break
  108.             }
  109.             # powershell 扑克 游戏 扑克牌 2014-06-15 洗牌 传教士
  110.         }
  111.         Write-Host "黑桃A的位置为:第【$黑桃A位置】张牌 "


  112.         #计算输赢
  113.         for ($i = 0;$i -lt 4;$i++)
  114.         {
  115.             for ($l = 0;$l -lt 13;$l++)
  116.             {
  117.                 $temp003 = $52张牌.SyncRoot[$i].syncroot[$l]

  118.                 if ($temp003 -eq $电脑抽到的牌)
  119.                 {
  120.                     $电脑抽到的牌_花色 = $i
  121.                     $电脑抽到的牌_大小 = $l

  122.                 }
  123.                 elseif ($temp003 -eq $你抽到的牌)
  124.                 {
  125.                     $你抽到的牌_花色 = $i
  126.                     $你抽到的牌_大小 = $l
  127.                 }
  128.             }
  129.         }

  130.         if ($你抽到的牌_大小 -lt $电脑抽到的牌_大小 )
  131.         {
  132.             $script:win = '输'
  133.         }

  134.         if ($你抽到的牌_大小 -gt $电脑抽到的牌_大小 )
  135.         {
  136.             $script:win = '赢'
  137.         }

  138.         if ($你抽到的牌_大小 -eq $电脑抽到的牌_大小) #牌大小相同,就比较花色。花色不可能相同。
  139.         {
  140.             if ($你抽到的牌_花色 -gt $电脑抽到的牌_花色)
  141.             {
  142.                 $script:win = '赢'
  143.             }

  144.             if ($你抽到的牌_花色 -lt $电脑抽到的牌_花色)
  145.             {
  146.                 $script:win = '输'
  147.             }
  148.         }


  149.         Write-Host "---【第 $script:游戏次数 场游戏结束】--- "
  150.         Write-Host "你【"  -NoNewline
  151.         if ($script:win -eq '输')
  152.         {
  153.             $颜色 = 'green'
  154.         }
  155.         else
  156.         {
  157.             $颜色 = 'red'
  158.         }
  159.         Write-Host $script:win   -NoNewline  -ForegroundColor  $颜色
  160.         Write-Host "】了 !"
  161.     }

  162. }

  163. function 计算称号
  164. {
  165.     $称号列表 = '蠢蛋','幼儿园赌童','菜鸟赌生','赌徒','赌鬼','赌王','赌神','赌圣','赌仙'
  166.     $升级经验值 = 3,8,15,25,40,56,74,96,109

  167.     if ($script:win -eq '赢')
  168.     {
  169.         $script:当前经验值++
  170.     }

  171.     if ($script:当前经验值 -gt $升级经验值[$script:等级])
  172.     {
  173.         $script:等级++
  174.     }
  175.     $当前称号 = $称号列表[$script:等级]
  176.     [console]::Title = "你当前的经验值: $script:当前经验值,你当前的等级: $script:等级,你当前的称号为:$当前称号"
  177. }

  178. for ($script:游戏次数 = 1;$script:游戏次数 -lt 99999;$script:游戏次数++)
  179. {
  180.     计算称号
  181.     pokergame
  182. }

复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

DTCC2018购票6.8折优惠进行时

中国数据库技术大会是国内数据库及大数据领域规模最大、最受欢迎的技术交流盛会。 2018年5月10-12日,第九届中国数据库技术大会将如约而至。本届大会以“数领先机•智赢未来”为主题,设定2大主会场及20个技术专场,邀请来自国内外互联网、金融、教育等行业百余位技术专家,共同探讨Oracle、MySQL、NoSQL、大数据等领域的前瞻性热点话题与技术。
----------------------------------------
优惠时间:2018年2月13日前

报名链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP