导语
还记得那些年,我们玩过的Windows小游戏吗?
说起Windows自带的游戏,相信许多80、90后的朋友都不陌生。
在很早的那个游戏贫瘠的年代,《纸牌》、《扫雷》等游戏帮助我们在微机课上带来了许多欢
乐的时光。但在这些游戏中,有一款游戏似乎玩懂的人,甚至知道玩法的人并不多。这款游戏
就是《红心大战》。
最近小编心血来潮仔细钻研了一下之后,发现这款游戏玩起来却比其他的几款游戏更带感
一些。因为这款游戏的玩法简单概括就是两个字:“坑人”,而且是明着坑的那种。
那大家猜到了哈——今天跟着木木子一起开启《红心大战》纸牌小游戏吧!
正文
一、 红心大战用户手册
1.打开游戏:双击hongxindazhan.py 主程序运行即可!
2.开始游戏:键入玩家姓名,创建新ID,点确认进入游戏。
3.游戏流程:
1)换牌:
选择三张手牌,点击上方按钮完成交换;
2)出牌:
轮到玩家出牌时,选择手牌单击便可打出。(具体出牌规则详见附录)
注:当此时机不能打出此牌时,下方提示栏会显示无法打出原因。
4.统分阶段:一轮游戏过后,会弹出得分表,显示玩家和三名电脑每轮积分和总积分,并显示
玩家当前名次。(具体胜负判定规则详见附录)
5.菜单栏:
1)游戏栏:
新游戏(F2):单击开启新游戏。
得分(F4):单击显示得分表。
背景音乐:单击切换音乐开关。
选项(F5):单击修改电脑出牌速度。
退出:单击退出游戏。
2)帮助栏:
规则介绍(F1):单击显示简要规则和获胜条件。
名言:单击弹出一则名言。
6.背景音乐:更换:可用自己的wav格式音乐重命名为‘m1.wav’替换程序目录下的同名文件。
二、红心大战游戏规则:
1、在玩游戏前,需要决定庄家。在电脑中,庄家坐南。 2、拿到一手牌(共计13张)后,庄家首先须选出三张牌传给其他对手。第一局把牌传给左手
边的玩家;第二局把牌传给右手边的玩家;第三局把牌传给坐在对面的玩家;第四局不传牌,
依此类推。接到庄家的传牌后,也需要任意传回给庄家三张牌。在电脑中,如要选牌,单击相
应牌张即可。如要取消选定的牌,请再次单击。
3、抓有梅花2 的玩家必须首先出梅花2,谓首攻。
4、然后按顺时针方向出牌。每位玩家依次必须跟同花色牌。如果已经没有与发牌花色相同的
牌,则可以出任何一张牌。唯一例外是不能在第一圈牌中出红桃或黑桃Q(通常称为“猪”)。注
意:出的同一花色牌中最大的牌会赢取这一圈,赢牌的玩家在下一圈中先出牌。只有前面出过
红桃以后,才可以拿红桃领出(除非手中只剩下红桃一种花色的牌张)。
5,、每一轮游戏结束时,每张红心计1 分,“黑桃皇后(猪)”计13 分。游戏将持续到有人得
100 分或更多分或者庄家退出游戏时结束。如果在一轮牌中赢得了所有的红心和“黑桃皇
后”(称之为“全收”),则“全收”者得零分,其余玩家每人得26 分。该游戏的得分越低越好。
三、准备中
1)环境安装
▲环境安装 本文用到的运行环境:Python3.7、Pycharm社区版2020、tkinter模块、部分
自带模块直接导入不需要安装。(如果需要安装包软件、激活码或者遇到问题的话可以私信我
哈!) 模块安装:pip install -i https://pypi.douban.com/simple/ +模块名
2)背景选择
最原始的绿色背景。(仅展示背景,其余图片比较多不展示)参考为最上面第二个图片👆
四、代码演示
仅展示主程序源码。每行代码都有注释所以直接展示!全部的源码见文末!
from Tkinter import *
from tkFont import *
import winsound
from tkMessageBox import *
from inner import *
from dialog import *
#游戏主界面创建
class GameFrame:
def __init__(self,game,bgimg):#game,Game类对象;bgimg,背景图片
self.master = game.root
#创建画布,绘制背景
self.c = Canvas(self.master,width = 1024,height = 640)
self.c.create_image(514,322,image=bgimg)
self.c.pack()
#创建状态条
self.status = Label(self.master,text=" 欢迎参加红心大战!",
bd=1,relief=SUNKEN,anchor=W)
self.status.pack(fill = X)
#打开开始对话框
startdialog = StartDialog(self.master,"红心大战")
if startdialog.isCancel:
game.cancel()
else:
self.gamemodetext = ['向左传','向右传','交叉换牌']
self.name &#