📄 deckofcards.java
字号:
result_label.setText("正在换牌......");
}
catch (IOException E) {}
}
else {
result_label.setText("你的分数不够!不能再换牌了!");
}
}
}
}
);
//玩家的第五张牌被点击触发的换牌事件
card_image[4][PLAYER].addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (GameIsStart == true) {
if (player_score >= 200) {
try {
output.writeInt(ChangeCard);
output.writeInt(4);
result_label.setText("正在换牌......");
}
catch (IOException E) {}
}
else {
result_label.setText("你的分数不够!不能再换牌了!");
}
}
}
}
);
//对手的第一张牌被点击触发的偷看事件
card_image[0][EMULANT].addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (GameIsStart == true) {
if (player_score >= 200) {
try {
output.writeInt(PeekCard);
output.writeInt(0);
result_label.setText("偷看中......");
}
catch (IOException E) {}
}
else {
result_label.setText("你的分数不够!不能再偷看别人的牌了!");
}
}
}
}
);
//对手的第二张牌被点击触发的偷看事件
card_image[1][EMULANT].addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (GameIsStart == true) {
if (player_score >= 200) {
try {
output.writeInt(PeekCard);
output.writeInt(1);
result_label.setText("偷看中......");
}
catch (IOException E) {}
}
else {
result_label.setText("你的分数不够!不能再偷看别人的牌了!");
}
}
}
}
);
//对手的第三张牌被点击触发的偷看事件
card_image[2][EMULANT].addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (GameIsStart == true) {
if (player_score >= 200) {
try {
output.writeInt(PeekCard);
output.writeInt(2);
result_label.setText("偷看中......");
}
catch (IOException E) {}
}
else {
result_label.setText("你的分数不够!不能再偷看别人的牌了!");
}
}
}
}
);
//对手的第四张牌被点击触发的偷看事件
card_image[3][EMULANT].addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (GameIsStart == true) {
if (player_score >= 200) {
try {
output.writeInt(PeekCard);
output.writeInt(3);
result_label.setText("偷看中......");
}
catch (IOException E) {}
}
else {
result_label.setText("你的分数不够!不能再偷看别人的牌了!");
}
}
}
}
);
//对手的第五张牌被点击触发的偷看事件
card_image[4][EMULANT].addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (GameIsStart == true) {
if (player_score >= 200) {
try {
output.writeInt(PeekCard);
output.writeInt(4);
result_label.setText("偷看中......");
}
catch (IOException E) {}
}
else {
result_label.setText("你的分数不够!不能再偷看别人的牌了!");
}
}
}
}
);
//点击连接服务器按钮的触发事件
button_client.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (address_textf.getText().compareTo("") == 0) {
result_label.setText("请输入服务器<地址>后再点击连接按钮");
}
else if (port_textf.getText().compareTo("") == 0) {
result_label.setText("请输入服务器<端口>后再点击连接按钮");
}
else {
client = new Client();
client.start();
}
}
}
);
//点击断开连接按钮的触发事件
/*
button_break.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
BreakConnect = true;
result_label.setText("服务器已经断开,请重新连接");
button_begin.setEnabled(false);
button_begin.setBackground(Color.lightGray);
button_break.setEnabled(false);
button_break.setBackground(Color.lightGray);
button_client.setEnabled(true);
button_client.setBackground(Color.white);
button_100.setEnabled(false);
button_100.setBackground(Color.lightGray);
button_200.setEnabled(false);
button_200.setBackground(Color.lightGray);
button_300.setEnabled(false);
button_300.setBackground(Color.lightGray);
button_400.setEnabled(false);
button_400.setBackground(Color.lightGray);
button_500.setEnabled(false);
button_500.setBackground(Color.lightGray);
button_begin.setEnabled(false);
button_begin.setBackground(Color.lightGray);
button_break.setEnabled(false);
button_break.setBackground(Color.lightGray);
}
}
);
*/
}
//添加控件函数addComponent()
public void addComponent(Component c, GridBagLayout g, GridBagConstraints gc,
JPanel p, int row, int column, int width, int height) {
gc.gridx = column;
gc.gridy = row;
gc.gridwidth = width;
gc.gridheight = height;
g.setConstraints(c, gc);
p.add(c);
}
//检查分数并决定各赌注按钮可不可用的函数checkscore()
public void checkscore() {
image = new ImageIcon("money.gif");
if (player_score >= 100) {
button_100.setEnabled(true);
button_100.setBackground(Color.white);
button_100.setIcon(image);
}
if (player_score >= 200) {
button_200.setEnabled(true);
button_200.setBackground(Color.white);
button_200.setIcon(image);
}
if (player_score >= 300) {
button_300.setEnabled(true);
button_300.setBackground(Color.white);
button_300.setIcon(image);
}
if (player_score >= 400) {
button_400.setEnabled(true);
button_400.setBackground(Color.white);
button_400.setIcon(image);
}
if (player_score >= 500) {
button_500.setEnabled(true);
button_500.setBackground(Color.white);
button_500.setIcon(image);
}
if (player_score < 200) {
button_200.setEnabled(false);
button_200.setBackground(Color.lightGray);
button_200.setIcon(null);
}
if (player_score < 300) {
button_300.setEnabled(false);
button_300.setBackground(Color.lightGray);
button_300.setIcon(null);
}
if (player_score < 400) {
button_400.setEnabled(false);
button_400.setBackground(Color.lightGray);
button_400.setIcon(null);
}
if (player_score < 500) {
button_500.setEnabled(false);
button_500.setBackground(Color.lightGray);
button_500.setIcon(null);
}
}
//下注函数wager()
public void wager() {
button_100.setEnabled(false);
button_100.setBackground(Color.lightGray);
button_100.setIcon(null);
button_200.setEnabled(false);
button_200.setBackground(Color.lightGray);
button_200.setIcon(null);
button_300.setEnabled(false);
button_300.setBackground(Color.lightGray);
button_300.setIcon(null);
button_400.setEnabled(false);
button_400.setBackground(Color.lightGray);
button_400.setIcon(null);
button_500.setEnabled(false);
button_500.setBackground(Color.lightGray);
button_500.setIcon(null);
player_score = player_score - wager;
score_label.setText("你的分数 :" + player_score);
}
//显示手上的牌的函数showCard()
public void showCard(int name, int order) {
image = new ImageIcon(card_name[order][name] + ".gif");
card_image[order][name].setIcon(image);
}
public static void main(String args[]) {
DeckOfCards app = new DeckOfCards();
app.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
private void jbInit() throws Exception {
this.setFont(new java.awt.Font("新宋体", 0, 12));
this.setResizable(false);
}
//客户端通信和处理程序
class Client
extends Thread {
public Client() {
try {
socket = new Socket(address_textf.getText(),
Integer.parseInt(port_textf.getText()));
input = new DataInputStream(socket.getInputStream());
output = new DataOutputStream(socket.getOutputStream());
button_break.setEnabled(true);
button_break.setBackground(Color.white);
button_client.setEnabled(false);
button_client.setBackground(Color.lightGray);
result_label.setText("服务器已经连接,请等待另一个玩家连接");
}
catch (IOException E) {
E.printStackTrace();
result_label.setText("连接服务器失败!请重新连接");
button_client.setEnabled(true);
button_client.setBackground(Color.white);
}
}
public void run() {
while (true) {
try {
int operate=input.readInt();
if ( operate==UpdateStatus ) {
result_label.setText("更新状态中......");
level_label.setText("你的等级:" + input.readUTF());
emulant_level_label.setText("对手等级 : " + input.readUTF());
player_score = input.readInt();
score_label.setText("你的分数 : " + player_score);
emulant_score_label.setText("对手分数 : " + input.readInt());
result_label.setText("更新状态完毕,请开始游戏");
button_begin.setEnabled(true);
button_begin.setBackground(Color.white);
}
else if ( operate==GetCard ) {
for (int i = 0; i < 5; i++) {
card_name[i][PLAYER] = input.readInt();
showCard(PLAYER, i);
}
level_label.setText("你的等级:" + input.readUTF());
player_score = input.readInt();
score_label.setText("你的分数 :" + player_score);
player_status.setText("你的牌 : " + input.readUTF());
winchance_label.setText("获胜几率:" + input.readFloat() + "%");
result_label.setText("取牌完毕");
emulant_status.setText("对手的牌 : 你下注了我就让你看");
result_label.setText("请看牌然后下注");
checkscore();
GameIsStart = true;
}
else if ( operate==ChangeCard ) {
int index = input.readInt();
card_name[index][1] = input.readInt();
showCard(PLAYER, index);
player_score = input.readInt();
score_label.setText("你的分数 :" + player_score);
player_status.setText("玩家的牌 : " + input.readUTF());
winchance_label.setText("获胜几率:" + input.readFloat() + "%");
checkscore();
result_label.setText("啊,你偷偷地换了一张牌,你要付出扣除100分的代价!");
}
else if ( operate==PeekCard ) {
int index = input.readInt();
card_name[index][0] = input.readInt();
showCard(EMULANT, index);
result_label.setText("偷看完毕");
player_score = input.readInt();
score_label.setText("你的分数 :" + player_score);
checkscore();
result_label.setText("啊,你偷看了对手一张牌,你要付出扣除100分的代价!");
}
else if ( operate==Wager ) {
for (int i = 0; i < 5; i++) {
card_name[i][EMULANT] = input.readInt();
showCard(EMULANT, i);
}
emulant_status.setText("对手的牌 : "+input.readUTF());
result_label.setText(input.readUTF());
level_label.setText("你的等级:" + input.readUTF());
emulant_level_label.setText("对手等级:" + input.readUTF());
player_score = input.readInt();
score_label.setText("你的分数 :" + player_score);
emulant_score_label.setText("对手分数 :" + input.readInt());
if (player_score >= 100) {
button_begin.setText("点这里再来一次");
button_begin.setBackground(Color.white);
button_begin.setEnabled(true);
}
else {
result_label.setText("很遗憾!你的分数为零!游戏结束了!");
button_begin.setText("游戏已结束");
break;
}
}
}
catch (IOException ec) {}
}
} //end of run
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -