上班划水神器:一个可以在控制台玩斗地主的项目!

这是什么?

这是Ratel,它可以在命令行内进行简单的斗地主游戏,来张图体验一下:

怎么开始玩?

Ratel分客户端和服务端,你可以在本地启动一个客户端让小伙伴们的客户端都连接你的服务器进行游戏,又或者可以直接连接作者公网服务器进行游戏,IP 39.105.65.8 Port 1024,不过作为玩家,我们最看重的还是客户端的使用!

你可以将Ratel项目Clone到本地并导入你的IDE中进行游戏!
git clone https://github.com/ainilili/ratel.git
复制代码

之后打开landlords-client模块中的SimpleClient类启动运行。

你可以使用jar包启动

下载Release版本 github.com/ainilili/ra…

之后进入下载目录中执行一下指令

java -jar landlords-server/target/landlords-server-#{version}.jar -p 1024
java -jar landlords-client/target/landlords-client-#{version}.jar -p 1024 -h 127.0.0.1
复制代码

上述#{version}为当前Release版本,-p 指定端口,-h 执行Host,这里可以切换为39.105.65.8

开始玩?

Ratel客户端采用命令行输入指令的方式与服务端进行交互,连接服务器之后要做的第一件事就是设置昵称

Connection to server successful, welcome to ratel !!
Please set your nickname

[ratel@nickname]$ Nico
复制代码

我将昵称设置为Nico,之后将会进入选项板

Options: 
1. Create Room
2. Room List
3. Join Room
Please enter the number of options

[ratel@options]$ 
复制代码

这时我们可以创建房间查看房间列表加入房间, 不废话,先创建一个再说!

[ratel@options]$ 1

You has been create room with id 2
Please wait for other players to join !
复制代码

好了,耐心等待吧~ 什么?等太久了?

好吧,如果你感觉没有人约战,可以加入Ratel体验QQ群948365095

当满三人之后,游戏将会开始,这时就要讲解一下选牌的规则了!

┌──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐
│3 |4 |5 |6 |7 |8 |9 |10|J |Q |K |A |2 |S |X |
│♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |  |  |
└──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘
复制代码

这是按照从小打大的规则将3到大王排序后的结果

如果你想出顺子

┌──┐──┐──┐──┐──┐
│7 |8 |9 |10|J |
│♦ |♦ |♦ |♦ |♦ |
└──┘──┘──┘──┘──┘
复制代码

你可以输入 7890j or 789tj

如果你想出王炸

┌──┐──┐
│S |X |
│  |  |
└──┘──┘
复制代码

你可以输入 sx

这是所有牌的别名映射规则

poker-> │3 |4 |5 |6 |7 |8 |9 |10   |J  |Q  |K  |A    |2 |S  |X  |
alias-> │3 |4 |5 |6 |7 |8 |9 |T t 0|J j|Q q|K k|A a 1|2 |S s|X x|
复制代码
  • 如果本回合内你不想出牌,可以输入 pass
  • 如果本回合内你想退出游戏,可以输入 exit

上班不忙的时候,玩玩Ratel划划水放松一下也不错。

最后放上项目地址:github.com/ainilili/ra…

以下是使用Qt的QGraphicsView创建一个简单画板的示例代码: mainwindow.h: ``` #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class QGraphicsScene; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_actionClear_triggered(); private: Ui::MainWindow *ui; QGraphicsScene *scene; }; #endif // MAINWINDOW_H ``` mainwindow.cpp: ``` #include "mainwindow.h" #include "ui_mainwindow.h" #include <QGraphicsScene> #include <QGraphicsView> #include <QGraphicsEllipseItem> #include <QMouseEvent> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); // 创建场景和视图 scene = new QGraphicsScene(this); QGraphicsView *view = new QGraphicsView(scene); setCentralWidget(view); setWindowTitle(tr("Simple Paint")); // 设置视图大小 view->setFixedSize(400, 400); // 设置画笔颜色和宽度 QPen pen; pen.setColor(Qt::black); pen.setWidth(3); // 监听视图的鼠标事件 view->viewport()->installEventFilter(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_actionClear_triggered() { // 清空场景中的所有图形项 scene->clear(); } bool MainWindow::eventFilter(QObject *watched, QEvent *event) { if (watched == ui->graphicsView->viewport() && event->type() == QEvent::MouseButtonPress) { // 获取鼠标点击的位置 QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event); QPointF pos = ui->graphicsView->mapToScene(mouseEvent->pos()); // 创建一个椭圆图形项并添加到场景中 QGraphicsEllipseItem *ellipse = new QGraphicsEllipseItem(pos.x() - 10, pos.y() - 10, 20, 20); ellipse->setPen(pen); scene->addItem(ellipse); return true; } return QMainWindow::eventFilter(watched, event); } ``` 在这个示例代码中,我们创建了一个QGraphicsScene和一个QGraphicsView,用于显示绘制的图形。然后,我们设置视图的大小并监听视图的鼠标事件。当用户在视图中点击鼠标时,我们获取鼠标点击的位置,创建一个椭圆图形项并添加到场景中。最后,我们设置画笔颜色和宽度,并在清空场景时删除所有图形项。 注意:在这个示例代码中,我们使用了事件过滤器来监听视图的鼠标事件。如果你对事件过滤器不熟悉,可以先了解一下Qt中的事件系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值