147 lines
No EOL
3 KiB
C++
147 lines
No EOL
3 KiB
C++
#include "vec.h"
|
|
#include "list.h"
|
|
#include <time.h>
|
|
#include <stdio.h>
|
|
std::string PU[54] = {
|
|
"1A", "1B", "1C", "1D",
|
|
"2A", "2B", "2C", "2D",
|
|
"3A", "3B", "3C", "3D",
|
|
"4A", "4B", "4C", "4D",
|
|
"5A", "5B", "5C", "5D",
|
|
"6A", "6B", "6C", "6D",
|
|
"7A", "7B", "7C", "7D",
|
|
"8A", "8B", "8C", "8D",
|
|
"9A", "9B", "9C", "9D",
|
|
"XA", "XB", "XC", "XD",
|
|
"JA", "JB", "JC", "JD",
|
|
"QA", "QB", "QC", "QD",
|
|
"KA", "KB", "KC", "KD",
|
|
"BJ", "RJ"};
|
|
|
|
int main()
|
|
{
|
|
|
|
int xipai_flag = 0;
|
|
printf("生成随机扑克序列\n");
|
|
srand(time(NULL));
|
|
Vec v(54, 2);
|
|
// v.printall();
|
|
|
|
List l;
|
|
|
|
printf("开始建立链表\n");
|
|
|
|
for (int i = 0; i <= 53; i++)
|
|
{
|
|
l.firstInsert(v.get(i));
|
|
std::cout << PU[l[0]] << " ";
|
|
if (i % 2 != 0)
|
|
printf("\n");
|
|
}
|
|
|
|
Begin:
|
|
printf("\n是否重新洗牌?(0/1)");
|
|
scanf("%d", &xipai_flag);
|
|
|
|
if (xipai_flag == 1)
|
|
{
|
|
v.reorder();
|
|
|
|
l.clear();
|
|
|
|
printf("开始建立链表\n");
|
|
|
|
for (int i = 0; i <= 53; i++)
|
|
{
|
|
l.firstInsert(v.get(i));
|
|
std::cout << PU[l[0]] << " ";
|
|
if (i % 2 != 0)
|
|
printf("\n");
|
|
}
|
|
xipai_flag == 0;
|
|
goto Begin;
|
|
}
|
|
printf("开始发牌\n");
|
|
List p1, p2, p3;
|
|
for (int i = 0; i <= 53; i++)
|
|
{
|
|
switch (i % 3)
|
|
{
|
|
case 0:
|
|
p1.firstInsert(l[i]);
|
|
break;
|
|
case 1:
|
|
p2.firstInsert(l[i]);
|
|
break;
|
|
case 2:
|
|
p3.firstInsert(l[i]);
|
|
break;
|
|
}
|
|
}
|
|
l.clear();
|
|
p1.sort();
|
|
p2.sort();
|
|
p3.sort();
|
|
int player = 0, opt = 0;
|
|
List *pai;
|
|
select:
|
|
printf("选择玩家(1/2/3)");
|
|
scanf("%d", &player);
|
|
switch (player)
|
|
{
|
|
case 1:
|
|
pai = &p1;
|
|
break;
|
|
case 2:
|
|
pai = &p2;
|
|
break;
|
|
case 3:
|
|
pai = &p3;
|
|
break;
|
|
default:
|
|
printf("失败\n");
|
|
goto select;
|
|
}
|
|
while (1)
|
|
{
|
|
|
|
printf("1看牌2出牌3查看牌堆4结束");
|
|
scanf("%d", &opt);
|
|
switch (opt)
|
|
{
|
|
case 1:
|
|
for (int i = 0; i < (*pai).getSize(); i++)
|
|
{
|
|
std::cout << i << ": " << PU[(*pai)[i]] << "\n";
|
|
}
|
|
printf("剩余%d张牌\n", pai->getSize());
|
|
break;
|
|
case 2:
|
|
printf("选择:");
|
|
scanf("%d", &opt);
|
|
// l.firstInsert((*pai)[opt]);
|
|
|
|
std::cout << "打出" << PU[l.firstInsert((*pai).remove(opt))];
|
|
printf("\n");
|
|
printf("剩余%d张牌\n", pai->getSize());
|
|
|
|
break;
|
|
case 3:
|
|
for (int i = 0; i < l.getSize(); i++)
|
|
{
|
|
std::cout << i << ": " << PU[l[i]];
|
|
printf("\n");
|
|
}
|
|
break;
|
|
|
|
case 4:
|
|
goto select;
|
|
|
|
default:
|
|
printf("失败\n");
|
|
}
|
|
}
|
|
return 0;
|
|
|
|
system("pause");
|
|
} |