关于棋牌游戏源代码开放
知识共享-五子棋java实现源代码(雷惊风)

经典的五子棋java程序(源带码)直接复制粘贴importjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;importjava.awt.Color;publicclassenzitextends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener{intcolor_Qizi=0;//旗子的颜色标识0:白子1:黑子intintGame_Start=0;//游戏开始标志0未开始1游戏中intintGame_Body[][]=newint[16][16]; //设置棋盘棋子状态0 无子1 白子2 黑子Button b1=new Button("游戏开始");Button b2=new Button("重置游戏");Label lblWin=new Label(" ");Checkbox ckbHB[]=new Checkbox[2];CheckboxGroupckgHB=new CheckboxGroup();publicvoidinit(){setLayout(null);addMouseListener(this);add(b1);b1.setBounds(330,50,80,30);b1.addActionListener(this);add(b2);b2.setBounds(330,90,80,30);b2.addActionListener(this);ckbHB[0]=new Checkbox("白子先",ckgHB,false);ckbHB[0].setBounds(320,20,60,30);ckbHB[1]=new Checkbox("黑子先",ckgHB,false);ckbHB[1].setBounds(380,20,60,30);add(ckbHB[0]);add(ckbHB[1]);ckbHB[0].addItemListener(this);ckbHB[1].addItemListener(this);add(lblWin);lblWin.setBounds(330,130,80,30);Game_start_csh();}publicvoiditemStateChanged(ItemEvent e){if (ckbHB[0].getState()) //选择黑子先还是白子先{color_Qizi=0;}else{color_Qizi=1;}}publicvoidactionPerformed(ActionEvent e){Graphics g=getGraphics();if (e.getSource()==b1){Game_start();}else{Game_re();}}publicvoidmousePressed(MouseEvent e){}publicvoidmouseClicked(MouseEvent e){Graphics g=getGraphics();int x1,y1;x1=e.getX();y1=e.getY();if (e.getX()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300) {return;}if (x1%20>10){x1+=20;}if(y1%20>10){y1+=20;}x1=x1/20*20;y1=y1/20*20;set_Qizi(x1,y1);}publicvoidmouseEntered(MouseEvent e){}publicvoidmouseExited(MouseEvent e){}publicvoidmouseReleased(MouseEvent e){}publicvoidmouseDragged(MouseEvent e){}publicvoidmouseMoved(MouseEvent e){}publicvoid paint(Graphics g){draw_qipan(g);}publicvoid set_Qizi(intx,int y) //落子{if (intGame_Start==0) //判断游戏未开始{return;}if (intGame_Body[x/20][y/20]!=0){return;}Graphics g=getGraphics();if (color_Qizi==1)//判断黑子还是白子{g.setColor(Color.black);color_Qizi=0;}else{g.setColor(Color.white);color_Qizi=1;}g.fillOval(x-10,y-10,20,20);intGame_Body[x/20][y/20]=color_Qizi+1;if (Game_win_1(x/20,y/20)) //判断输赢{lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0;}if (Game_win_2(x/20,y/20)) //判断输赢{lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0;}if (Game_win_3(x/20,y/20)) //判断输赢{lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0;}if (Game_win_4(x/20,y/20)) //判断输赢{lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0;}}public String Get_qizi_color(int x){if (x==0){return"黑子";}else{return"白子";}}publicvoid draw_qipan(Graphics G) //画棋盘15*15{G.setColor(Color.lightGray);G.fill3DRect(10,10,300,300,true);G.setColor(Color.black);for(inti=1;i<16;i++){G.drawLine(20,20*i,300,20*i);G.drawLine(20*i,20,20*i,300);}}publicvoid Game_start() //游戏开始{intGame_Start=1;Game_btn_enable(false);b2.setEnabled(true);}publicvoid Game_start_csh() //游戏开始初始化{intGame_Start=0;Game_btn_enable(true);b2.setEnabled(false);ckbHB[0].setState(true);for (inti=0;i<16 ;i++ ){for (int j=0;j<16 ;j++ ){intGame_Body[j]=0;}}lblWin.setText("");}publicvoid Game_re() //游戏重新开始{repaint();Game_start_csh();}publicvoid Game_btn_enable(boolean e) //设置组件状态{b1.setEnabled(e);b2.setEnabled(e);ckbHB[0].setEnabled(e);ckbHB[1].setEnabled(e);}publicboolean Game_win_1(intx,int y) //判断输赢横{int x1,y1,t=1;x1=x;y1=y;for (inti=1;i<5 ;i++ ){if (x1>15){break;}if (intGame_Body[x1+i][y1]==intGame_Body[x][y]) {t+=1;}else{break;}}for (inti=1;i<5 ;i++ ){if (x1<1){break;}if(intGame_Body[x1-i][y1]==intGame_Body[x][y]) {t+=1;}else{break;}}if (t>4){returntrue;}else{returnfalse;}}publicboolean Game_win_2(intx,int y) //判断输赢竖{int x1,y1,t=1;x1=x;y1=y;for (inti=1;i<5 ;i++ ){if (x1>15){break;}if (intGame_Body[x1][y1+i]==intGame_Body[x][y]){t+=1;}else{break;}}for (inti=1;i<5 ;i++ ){if (x1<1){break;}if(intGame_Body[x1][y1-i]==intGame_Body[x][y]) {t+=1;}else{break;}}if (t>4){returntrue;}else{returnfalse;}}publicboolean Game_win_3(intx,int y) //判断输赢左斜{int x1,y1,t=1;x1=x;y1=y;for (inti=1;i<5 ;i++ ){if (x1>15){break;}if (intGame_Body[x1+i][y1-i]==intGame_Body[x][y]) {t+=1;}else{break;}}for (inti=1;i<5 ;i++ ){if (x1<1){break;}if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y]) {t+=1;}else{break;}}if (t>4){returntrue;}else{returnfalse;}}publicboolean Game_win_4(intx,int y) //判断输赢左斜{int x1,y1,t=1;x1=x;y1=y;for (inti=1;i<5 ;i++ ){if (x1>15){break;}if (intGame_Body[x1+i][y1+i]==intGame_Body[x][y]) {t+=1;}else{break;}}for (inti=1;i<5 ;i++ ){if (x1<1){break;}if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y]) {t+=1;}else{break;}}if (t>4){returntrue;}else{returnfalse;}}}。
五子棋游戏源代码

import java.awt.*;import java.awt.event.*;import java.io.*;import .*;import java.util.*;class clientThread extends Thread {chessClient chessclient;clientThread(chessClient chessclient) {this.chessclient = chessclient;}public void acceptMessage(String recMessage) {if (recMessage.startsWith("/userlist ")) {StringTokenizer userToken = new StringTokenizer(recMessage, " ");int userNumber = 0;erList.removeAll();erChoice.removeAll();erChoice.addItem("所有人");while (userToken.hasMoreTokens()) {String user = (String) userToken.nextToken(" ");if (userNumber > 0 && !user.startsWith("[inchess]")) {erList.add(user);erChoice.addItem(user);}userNumber++;}erChoice.select("所有人");} else if (recMessage.startsWith("/yourname ")) {chessclient.chessClientName = recMessage.substring(10);chessclient.setTitle("Java五子棋客户端" + "用户名:"+ chessclient.chessClientName);} else if (recMessage.equals("/reject")) {try {chessclient.chesspad.statusText.setText("不能加入游戏");chessclient.controlpad.cancelGameButton.setEnabled(false);chessclient.controlpad.joinGameButton.setEnabled(true);chessclient.controlpad.creatGameButton.setEnabled(true);} catch (Exception ef) {chessclient.chatpad.chatLineArea.setText("chessclient.chesspad.chessSocket.close无法关闭");}chessclient.controlpad.joinGameButton.setEnabled(true);} else if (recMessage.startsWith("/peer ")) {chessclient.chesspad.chessPeerName = recMessage.substring(6);if (chessclient.isServer) {chessclient.chesspad.chessColor = 1;chessclient.chesspad.isMouseEnabled = true;chessclient.chesspad.statusText.setText("请黑棋下子");} else if (chessclient.isClient) {chessclient.chesspad.chessColor = -1;chessclient.chesspad.statusText.setText("已加入游戏,等待对方下子...");}} else if (recMessage.equals("/youwin")) {chessclient.isOnChess = false;chessclient.chesspad.chessVictory(chessclient.chesspad.chessColor);chessclient.chesspad.statusText.setText("对方退出,请点放弃游戏退出连接");chessclient.chesspad.isMouseEnabled = false;} else if (recMessage.equals("/OK")) {chessclient.chesspad.statusText.setText("创建游戏成功,等待别人加入...");} else if (recMessage.equals("/error")) {chessclient.chatpad.chatLineArea.append("传输错误:请退出程序,重新加入\n");} else {chessclient.chatpad.chatLineArea.append(recMessage + "\n");chessclient.chatpad.chatLineArea.setCaretPosition(chessclient.chatpad.chatLineArea.getText().length());}}public void run() {String message = "";try {while (true) {message = chessclient.in.readUTF();acceptMessage(message);}} catch (IOException es) {}}}public class chessClient extends Frame implements ActionListener, KeyListener { userPad userpad = new userPad();chatPad chatpad = new chatPad();controlPad controlpad = new controlPad();chessPad chesspad = new chessPad();inputPad inputpad = new inputPad();Socket chatSocket;DataInputStream in;DataOutputStream out;String chessClientName = null;String host = null;int port = 4331;boolean isOnChat = false; // 在聊天?boolean isOnChess = false; // 在下棋?boolean isGameConnected = false; // 下棋的客户端连接?boolean isServer = false; // 如果是下棋的主机boolean isClient = false; // 如果是下棋的客户端Panel southPanel = new Panel();Panel northPanel = new Panel();Panel centerPanel = new Panel();Panel westPanel = new Panel();Panel eastPanel = new Panel();chessClient() {super("Java五子棋客户端");setLayout(new BorderLayout());host = controlpad.inputIP.getText();westPanel.setLayout(new BorderLayout());westPanel.add(userpad, BorderLayout.NORTH);westPanel.add(chatpad, BorderLayout.CENTER);westPanel.setBackground(Color.pink);inputpad.inputWords.addKeyListener(this);chesspad.host = controlpad.inputIP.getText();centerPanel.add(chesspad, BorderLayout.CENTER);centerPanel.add(inputpad, BorderLayout.SOUTH);centerPanel.setBackground(Color.pink);controlpad.connectButton.addActionListener(this);controlpad.creatGameButton.addActionListener(this);controlpad.joinGameButton.addActionListener(this);controlpad.cancelGameButton.addActionListener(this);controlpad.exitGameButton.addActionListener(this);controlpad.creatGameButton.setEnabled(false);controlpad.joinGameButton.setEnabled(false);controlpad.cancelGameButton.setEnabled(false);southPanel.add(controlpad, BorderLayout.CENTER);southPanel.setBackground(Color.pink);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {if (isOnChat) {try {chatSocket.close();} catch (Exception ed) {}}if (isOnChess || isGameConnected) {try {chesspad.chessSocket.close();} catch (Exception ee) {}}System.exit(0);}public void windowActivated(WindowEvent ea) {}});add(westPanel, BorderLayout.WEST);add(centerPanel, BorderLayout.CENTER);add(southPanel, BorderLayout.SOUTH);pack();setSize(670, 548);setVisible(true);setResizable(false);validate();}public boolean connectServer(String serverIP, int serverPort)throws Exception {try {chatSocket = new Socket(serverIP, serverPort);in = new DataInputStream(chatSocket.getInputStream());out = new DataOutputStream(chatSocket.getOutputStream());clientThread clientthread = new clientThread(this);clientthread.start();isOnChat = true;return true;} catch (IOException ex) {chatpad.chatLineArea.setText("chessClient:connectServer:无法连接,建议重新启动程序\n");}return false;}public void actionPerformed(ActionEvent e) {if (e.getSource() == controlpad.connectButton) {host = chesspad.host = controlpad.inputIP.getText();try {if (connectServer(host, port)) {chatpad.chatLineArea.setText("");controlpad.connectButton.setEnabled(false);controlpad.creatGameButton.setEnabled(true);controlpad.joinGameButton.setEnabled(true);chesspad.statusText.setText("连接成功,请创建游戏或加入游戏");}} catch (Exception ei) {chatpad.chatLineArea.setText("controlpad.connectButton:无法连接,建议重新启动程序\n");}}if (e.getSource() == controlpad.exitGameButton) {if (isOnChat) {try {chatSocket.close();} catch (Exception ed) {}}if (isOnChess || isGameConnected) {try {chesspad.chessSocket.close();} catch (Exception ee) {}}System.exit(0);}if (e.getSource() == controlpad.joinGameButton) {String selectedUser = erList.getSelectedItem();if (selectedUser == null || selectedUser.startsWith("[inchess]")|| selectedUser.equals(chessClientName)) {chesspad.statusText.setText("必须先选定一个有效用户");} else {try {if (!isGameConnected) {if (chesspad.connectServer(chesspad.host, chesspad.port)) {isGameConnected = true;isOnChess = true;isClient = true;controlpad.creatGameButton.setEnabled(false);controlpad.joinGameButton.setEnabled(false);controlpad.cancelGameButton.setEnabled(true);chesspad.chessthread.sendMessage("/joingame "+ erList.getSelectedItem() + " "+ chessClientName);}} else {isOnChess = true;isClient = true;controlpad.creatGameButton.setEnabled(false);controlpad.joinGameButton.setEnabled(false);controlpad.cancelGameButton.setEnabled(true);chesspad.chessthread.sendMessage("/joingame "+ erList.getSelectedItem() + " "+ chessClientName);}} catch (Exception ee) {isGameConnected = false;isOnChess = false;isClient = false;controlpad.creatGameButton.setEnabled(true);controlpad.joinGameButton.setEnabled(true);controlpad.cancelGameButton.setEnabled(false);chatpad.chatLineArea.setText("chesspad.connectServer无法连接\n" + ee);}}}if (e.getSource() == controlpad.creatGameButton) {try {if (!isGameConnected) {if (chesspad.connectServer(chesspad.host, chesspad.port)) {isGameConnected = true;isOnChess = true;isServer = true;controlpad.creatGameButton.setEnabled(false);controlpad.joinGameButton.setEnabled(false);controlpad.cancelGameButton.setEnabled(true);chesspad.chessthread.sendMessage("/creatgame "+ "[inchess]" + chessClientName);}} else {isOnChess = true;isServer = true;controlpad.creatGameButton.setEnabled(false);controlpad.joinGameButton.setEnabled(false);controlpad.cancelGameButton.setEnabled(true);chesspad.chessthread.sendMessage("/creatgame "+ "[inchess]" + chessClientName);}} catch (Exception ec) {isGameConnected = false;isOnChess = false;isServer = false;controlpad.creatGameButton.setEnabled(true);controlpad.joinGameButton.setEnabled(true);controlpad.cancelGameButton.setEnabled(false);ec.printStackTrace();chatpad.chatLineArea.setText("chesspad.connectServer无法连接\n"+ ec);}}if (e.getSource() == controlpad.cancelGameButton) {if (isOnChess) {chesspad.chessthread.sendMessage("/giveup " + chessClientName);chesspad.chessVictory(-1 * chesspad.chessColor);controlpad.creatGameButton.setEnabled(true);controlpad.joinGameButton.setEnabled(true);controlpad.cancelGameButton.setEnabled(false);chesspad.statusText.setText("请建立游戏或者加入游戏");}if (!isOnChess) {controlpad.creatGameButton.setEnabled(true);controlpad.joinGameButton.setEnabled(true);controlpad.cancelGameButton.setEnabled(false);chesspad.statusText.setText("请建立游戏或者加入游戏");}isClient = isServer = false;}}public void keyPressed(KeyEvent e) {TextField inputWords = (TextField) e.getSource();if (e.getKeyCode() == KeyEvent.VK_ENTER) {if (erChoice.getSelectedItem().equals("所有人")) {try {out.writeUTF(inputWords.getText());inputWords.setText("");} catch (Exception ea) {chatpad.chatLineArea.setText("chessClient:KeyPressed无法连接,建议重新连接\n");erList.removeAll();erChoice.removeAll();inputWords.setText("");controlpad.connectButton.setEnabled(true);}} else {try {out.writeUTF("/" + erChoice.getSelectedItem()+ " " + inputWords.getText());inputWords.setText("");} catch (Exception ea) {chatpad.chatLineArea.setText("chessClient:KeyPressed无法连接,建议重新连接\n");erList.removeAll();erChoice.removeAll();inputWords.setText("");controlpad.connectButton.setEnabled(true);}}}}public void keyTyped(KeyEvent e) {}public void keyReleased(KeyEvent e) {}public static void main(String args[]) {chessClient chessClient = new chessClient();}}。
C语言实现五子棋小游戏源代码

break;
case ESC:
break;
case SPACE:
if(chessx>=1&&chessx<=19&&chessy>=1&&chessy<=19)
{
if(chess[chessx][chessy]==0)
}
if(flag==2)
{
cleardevice();
setfont(36, 0, "宋体", 900, 900, 0, false, false, false);
outtextxy(80,200,"RED win!");
getch();
closegraph();
exit(0);
}
}
if(flag==1)
flag=2;
else
flag=1;
break;
}
void draw_pixel(int x,int y,int color)
{
x=(x+2)*20;
y=(y+2)*20;
{
putpixel(x+8,y,color);
putpixel(x,y-8,color);
putpixel(x+8,y+8,color);
{
chess[chessx][chessy]=flag;
if(result(chessx,chessy)==1)
{
if(flag==1)
{
cleardevice();
n1=0;
n2=0;
(精选)关于棋牌游戏源代码开放

关于棋牌游戏源代码开放在现今的棋牌游戏运营行业如火如荼的阶段,为了减少与避免一些初次接触此行业的运营商被一些产品开发商公司蒙骗上当,特此编写以下的一些说明和答疑,花点时间认真阅读和思考,可能会为您减少巨大的损失。
深圳市壹柒游网络科技有限公司为您全面解答。
1.对运营商开放源代码,可以使运营商根据运营环境与实际情况调节平台,而不被产品提供商所牵制:运营棋牌游戏,本质上做的事情就是为玩家提供最好的服务和游戏娱乐环境,玩家在这里玩开心,才会留下来,并为拉入更加多的朋友进来,从而才会使你赢取利润,是相辅相成的,是一个因果关系。
而玩家的需求日新月异,你必须根据实际的环境,调节必要的平台功能,例如注册登录策略,游戏奖励策略,游戏规则修改策略,引导购买会员策略,引导购买道具策略等等。
不同的运营时期,所进行的定制策略和程度是不一样的,所以运营商几乎每天都有修改定制部分的欲望与需求。
若运营没有得到源代码,将需要进行一系列繁琐过程:联系开发商,商讨价格,付款,等待开发,然后等待漫长的交付测试阶段。
市场机遇是不会等您的,您说这过程,使您错过了多少发展的机遇呢?从事实也得到证明,横观现今互联网的游戏运营商,从不对运营商开放源代码的棋牌站点,运营成功的又能有多少呢?答案是几乎没有。
再看使用了开放源代码的成功而且还保持不断发展的站点呢?数目是非常多的,具体的资料可以到网上搜索就能得到,这里我们就不逐一提及了。
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?2.对运营商开放源代码,不需要为二次开发承担昂贵的开发费用:拥有了产品源代码,才可以进行二次开发,才可以时刻根据市场的需求的变化而立即变化。
而对于一些不牵涉到高级技术能力的功能的修改,也需要开发商加入的话,容易造成运营策略的泄漏,被其他人捷足先登了。
而且开发商除了收取开发成本的人员费用外,还需要收取您的人员管理成本,市场拓展成本,还有公司的收入等。
而这一切的成本,若运营商有了系统源代码后,您的运营成本将会减少很多,而这些成本费用的节省,可以使您投入到市场营销方面,赢取更加多的发展机遇。
麻将原代码

麻将原代码*/#include "dos.h"#include "stdio.h"#include "graphics.h"#include "bios.h"#include "conio.h"#include "stdlib.h"unsigned char far *video_buffer=(char far *)0xA0000000L;#define VGA256 0x13 /*图形模式13h*/#define TEXT_MODE 0x03 /*普通文本模式*/#define SETVGA Set_Video_Mode(VGA256)#define OUTVGA Set_Video_Mode(TEXT_MODE)#define BYTE unsigned char#define WORD unsigned int#define DWORD unsigned int#define ESC 283#define LEFT 19200#define RIGHT 19712#define H 9064#define ENTER 7181unsigned long int z=54400,zz=0,zy=0,zyy=0,z1=0,zl=10140;int key=0,keyy=0,sing=0,sing1=0,second=0,threes=0;struct chi{int lg;int lgg;}ch[13];struct mj{ char *name; /*名字*/int data1; /*是否已出,无用了*/int data2; /*是否在手中,1为自己,2为对方*/int number; /*同一个花色的第几张,共4张*/}m[136]={"1.bmp",0,0,1,"1.bmp",0,0,2,"1.bmp",0,0,3,"1.bmp",0,0,4,"2.bmp",0,0,1, "2.bmp",0,0,2,"2.bmp",0,0,3,"2.bmp",0,0,4,"3.bmp",0,0,1,"3.bmp",0,0,2,"3.bmp",0,0,3,"3.bmp",0,0,4,"4.bmp",0,0,1,"4.bmp",0,0,2,"4.bmp",0,0,3,"4.bmp",0,0,4,"5.bmp",0,0,1,"5.bmp",0,0,2,"5.bmp",0,0,3,"5.bmp",0,0,4,"6.bmp",0,0,1,"6.bmp",0,0,2,"6.bmp",0,0,3,"6.bmp",0,0,4,"7.bmp",0,0,1,"7.bmp",0,0,2,"7.bmp",0,0,3,"7.bmp",0,0,4,"8.bmp",0,0,1,"8.bmp",0,0,2,"8.bmp",0,0,3,"8.bmp",0,0,4,"9.bmp",0,0,1,"9.bmp",0,0,2,"9.bmp",0,0,3,"9.bmp",0,0,4,"10.bmp",0,0,1,"10.bmp",0,0,2,"10.bmp",0,0,3,"10.bmp",0,0,4, "11.bmp",0,0,1,"11.bmp",0,0,2,"11.bmp",0,0,3,"11.bmp",0,0,4,"12.bmp",0,0,1, "12.bmp",0,0,2,"12.bmp",0,0,3,"12.bmp",0,0,4,"13.bmp",0,0,1,"13.bmp",0,0,2,"13.bmp",0,0,3,"13.bmp",0,0,4,"14.bmp",0,0,1,"14.bmp",0,0,2,"14.bmp",0,0,3, "14.bmp",0,0,4,"15.bmp",0,0,1,"15.bmp",0,0,2,"15.bmp",0,0,3,"15.bmp",0,0,4, "16.bmp",0,0,1,"16.bmp",0,0,2,"16.bmp",0,0,3,"16.bmp",0,0,4,"17.bmp",0,0,1, "17.bmp",0,0,2,"17.bmp",0,0,3,"17.bmp",0,0,4,"18.bmp",0,0,1,"18.bmp",0,0,2, "18.bmp",0,0,3,"18.bmp",0,0,4,"19.bmp",0,0,1,"19.bmp",0,0,2,"19.bmp",0,0,3, "19.bmp",0,0,4,"20.bmp",0,0,1,"20.bmp",0,0,2,"20.bmp",0,0,3,"20.bmp",0,0,4, "21.bmp",0,0,1,"21.bmp",0,0,2,"21.bmp",0,0,3,"21.bmp",0,0,4,"22.bmp",0,0,1, "22.bmp",0,0,2,"22.bmp",0,0,3,"22.bmp",0,0,4,"23.bmp",0,0,1,"23.bmp",0,0,2, "23.bmp",0,0,3,"23.bmp",0,0,4,"24.bmp",0,0,1,"24.bmp",0,0,2,"24.bmp",0,0,3, "24.bmp",0,0,4,"25.bmp",0,0,1,"25.bmp",0,0,2,"25.bmp",0,0,3,"25.bmp",0,0,4, "26.bmp",0,0,1,"26.bmp",0,0,2,"26.bmp",0,0,3,"26.bmp",0,0,4,"27.bmp",0,0,1, "27.bmp",0,0,2,"27.bmp",0,0,3,"27.bmp",0,0,4,"28.bmp",0,0,1,"28.bmp",0,0,2, "28.bmp",0,0,3,"28.bmp",0,0,4,"29.bmp",0,0,1,"29.bmp",0,0,2,"29.bmp",0,0,3, "29.bmp",0,0,4,"30.bmp",0,0,1,"30.bmp",0,0,2,"30.bmp",0,0,3,"30.bmp",0,0,4, "31.bmp",0,0,1,"31.bmp",0,0,2,"31.bmp",0,0,3,"31.bmp",0,0,4,"32.bmp",0,0,1, "32.bmp",0,0,2,"32.bmp",0,0,3,"32.bmp",0,0,4,"33.bmp",0,0,1,"33.bmp",0,0,2, "33.bmp",0,0,3,"33.bmp",0,0,4,"34.bmp",0,0,1,"34.bmp",0,0,2,"34.bmp",0,0,3, "34.bmp"};struct every{ int *k; /*名字*/int oneorfour; /*同一张牌的第几张*/int number; /*第几张牌136*/int p;int g;int c;int d[2];};struct me{ int m; /*定义有几张牌,开始有13张随着游戏的进行,会越来越小*/ int p; /*乓对方*/int c; /*吃对方*/int g; /*杠*/struct every pp[14]; /*存放手上的牌*/}me;struct computer{ int m;int p;int c;int g;struct every pp[14];}computer,comp;/* 设置调色板*/void Set_Palette(int Color,BYTE r,BYTE g,BYTE b){outportb(0x3c8,Color); /*0x3c8写端口写色号*/outportb(0x3c9,r); /*0x3c9数据端口R、G、B的比例*/outportb(0x3c9,g);outportb(0x3c9,b);}/*0x3c7读端口0x3c6计算机调色板寄存器调用端口*//* 设置显示模式的函数*/void Set_Video_Mode(int mode){union REGS inregs,outregs; /*定义输入和返回寄存器*/inregs.h.ah=0; /*ah存放功能号0h表示进入视频模式*/inregs.h.al=(unsigned char)mode; /*al存放要设定的视频模式*/int86(0x10,&inregs,&outregs); /*通过10h中断设定显示模式int86()包含在dos.h*/ }void v_line(int y0,int y1,int x,unsigned int color){ unsigned int address,n,temp;if(y0>y1){temp=y1;y1=y0;y0=temp;}address=320*y0+x;for(n=0;n<=y1-y0;n++){video_buffer[address]=color;address+=320;}}void h_line(int x0,int x1,int y,unsigned int color){ unsigned int address,n,temp;if(x0>x1){temp=x1;x1=x0;x0=temp;}address=320*y+x0;for(n=0;n<=x1-x0;n++){video_buffer[address]=color;address+=1;}}void p_pixel(int x,int y,unsigned int color){ video_buffer[y*320+x]=color;}void s_square(int x,int y,int side,int color){h_line(x,x+side,y,color);h_line(x,x+side,y+side,color);v_line(y,y+side,x,color);v_line(y,y+side,x+side,color);}void r_rectangle(int x1,int y1,int x2,int y2,int color) {h_line(x1,x2,y1,color);h_line(x1,x2,y2,color);v_line(y1,y2,x1,color);v_line(y1,y2,x2,color);}void fillRectangle(int x1,int y1,int x2,int y2,int color) {int i;for(i=y1;i<=y2;i++){h_line(x1,x2,i,color);}}void showbmp(int l){ FILE *bmp;int i,x,y;BYTE palette[256][3];bmp=fopen(me.pp[l].k,"rb");fseek(bmp,54,SEEK_SET);for(i=0;i<256;i++){palette[i][2]=fgetc(bmp)>>2;palette[i][1]=fgetc(bmp)>>2;palette[i][0]=fgetc(bmp)>>2;fgetc(bmp);Set_Palette(i,palette[i][0],palette[i][1],palette[i][2]); }for (y=0;y<30;y++)for(x=0;x<20;x++)pokeb(0xa000,y*320+x+z+zz+z1,fgetc(bmp));fclose(bmp);}void showbmpd(int l){ FILE *bmp;int i,x,y;BYTE palette[256][3];bmp=fopen(me.pp[l].k,"rb");fseek(bmp,54,SEEK_SET);for(i=0;i<256;i++){palette[i][2]=fgetc(bmp)>>2;palette[i][1]=fgetc(bmp)>>2;palette[i][0]=fgetc(bmp)>>2;fgetc(bmp);Set_Palette(i,palette[i][0],palette[i][1],palette[i][2]); }for (y=0;y<30;y++)for(x=0;x<20;x++)pokeb(0xa000,y*320+x+zyy,fgetc(bmp));fclose(bmp);}void showybmp(int ll){ FILE *bmp;int i,x,y;BYTE palette[256][3];bmp=fopen(computer.pp[ll].k,"rb");fseek(bmp,54,SEEK_SET);for(i=0;i<256;i++){palette[i][2]=fgetc(bmp)>>2;palette[i][1]=fgetc(bmp)>>2;palette[i][0]=fgetc(bmp)>>2;fgetc(bmp);Set_Palette(i,palette[i][0],palette[i][1],palette[i][2]); }for (y=0;y<30;y++)for(x=0;x<20;x++)pokeb(0xa000,y*320+x+zy,fgetc(bmp));fclose(bmp);}void showcbmp(int ll){ FILE *bmp;int i,x,y;BYTE palette[256][3];bmp=fopen(computer.pp[ll].k,"rb");fseek(bmp,54,SEEK_SET);for(i=0;i<256;i++){palette[i][2]=fgetc(bmp)>>2;palette[i][1]=fgetc(bmp)>>2;palette[i][0]=fgetc(bmp)>>2;fgetc(bmp);Set_Palette(i,palette[i][0],palette[i][1],palette[i][2]); }for (y=0;y<30;y++)for(x=0;x<20;x++)pokeb(0xa000,y*320+x+zyy,fgetc(bmp));fclose(bmp);}void bmpp(int number){ FILE *bmp;int i,x,y;BYTE palette[256][3];bmp=fopen(m[number].name,"rb");fseek(bmp,54,SEEK_SET);for(i=0;i<256;i++){palette[i][2]=fgetc(bmp)>>2;palette[i][1]=fgetc(bmp)>>2;palette[i][0]=fgetc(bmp)>>2;fgetc(bmp);Set_Palette(i,palette[i][0],palette[i][1],palette[i][2]); }for (y=0;y<30;y++)for(x=0;x<20;x++)pokeb(0xa000,y*320+x+zl,fgetc(bmp));fclose(bmp);}void comlipai() /*整理电脑的牌*/{ int n,j,u;int *lingshi;for(n=0;n<computer.m;n++)for(j=n;j<computer.m;j++){if(computer.pp[n].number>computer.pp[j+1].number) {lingshi=computer.pp[n].k;computer.pp[n].k=computer.pp[j+1].k;computer.pp[j+1].k=lingshi;u=computer.pp[n].oneorfour;computer.pp[n].oneorfour=computer.pp[j+1].oneorfour; computer.pp[j+1].oneorfour=u;u=computer.pp[n].number;computer.pp[n].number=computer.pp[j+1].number; computer.pp[j+1].number=u;}elseif(computer.pp[n].number==computer.pp[j+1].number)if(computer.pp[n].oneorfour>computer.pp[j+1].oneorfour) {lingshi=computer.pp[n].k;computer.pp[n].k=computer.pp[j+1].k;computer.pp[j+1].k=lingshi;u=computer.pp[n].oneorfour;computer.pp[n].oneorfour=computer.pp[j+1].oneorfour; computer.pp[j+1].oneorfour=u;u=computer.pp[n].number;computer.pp[n].number=computer.pp[j+1].number; computer.pp[j+1].number=u;}}}void melipai(){ int n,j,u;int *lingshi;for(n=0;n<me.m;n++)for(j=n;j<me.m;j++){if(me.pp[n].number>me.pp[j+1].number){lingshi=me.pp[n].k;me.pp[n].k=me.pp[j+1].k;me.pp[j+1].k=lingshi;u=me.pp[n].oneorfour;me.pp[n].oneorfour=me.pp[j+1].oneorfour;me.pp[j+1].oneorfour=u;u=me.pp[n].number;me.pp[n].number=me.pp[j+1].number;me.pp[j+1].number=u;}elseif(me.pp[n].number==me.pp[j+1].number)if(me.pp[n].oneorfour>me.pp[j+1].oneorfour){lingshi=me.pp[n].k;me.pp[n].k=me.pp[j+1].k;me.pp[j+1].k=lingshi;u=me.pp[n].oneorfour;me.pp[n].oneorfour=me.pp[j+1].oneorfour;me.pp[j+1].oneorfour=u;u=me.pp[n].number;me.pp[n].number=me.pp[j+1].number;me.pp[j+1].number=u;}}}void rgzn(int c) /*本程序涵数的核心针对电脑的牌*/ { int b=0,lg,lgg,logo,logoo,pg=0,gp=0,cs=0,f=0;if(me.pp[c].number<=35 && me.pp[c].number>=0){logo=1;if(me.pp[c].number<=3 && me.pp[c].number>=0) logoo=1;else if(me.pp[c].number<=7 && me.pp[c].number>=4) logoo=2;else if(me.pp[c].number<=11 && me.pp[c].number>=8) logoo=3;else if(me.pp[c].number<=15 && me.pp[c].number>=12) logoo=4;else if(me.pp[c].number<=19 && me.pp[c].number>=16) logoo=5;else if(me.pp[c].number<=23 && me.pp[c].number>=20) logoo=6;else if(me.pp[c].number<=27 && me.pp[c].number>=24) logoo=7;else if(me.pp[c].number<=31 && me.pp[c].number>=28) logoo=8;else if(me.pp[c].number<=35 && me.pp[c].number>=32) logoo=9;}else if(me.pp[c].number<=71 && me.pp[c].number>=36) {logo=2;if(me.pp[c].number<=39 && me.pp[c].number>=36) logoo=1;else if(me.pp[c].number<=43 && me.pp[c].number>=40)else if(me.pp[c].number<=47 && me.pp[c].number>=44) logoo=3;else if(me.pp[c].number<=51 && me.pp[c].number>=48) logoo=4;else if(me.pp[c].number<=55 && me.pp[c].number>=52) logoo=5;else if(me.pp[c].number<=59 && me.pp[c].number>=56) logoo=6;else if(me.pp[c].number<=63 && me.pp[c].number>=60) logoo=7;else if(me.pp[c].number<=67 && me.pp[c].number>=64) logoo=8;else if(me.pp[c].number<=71 && me.pp[c].number>=68) logoo=9;}else if(me.pp[c].number<=107 && me.pp[c].number>=72) {logo=3;if(me.pp[c].number<=75 && me.pp[c].number>=72) logoo=1;else if(me.pp[c].number<=79 && me.pp[c].number>=76) logoo=2;else if(me.pp[c].number<=83 && me.pp[c].number>=80) logoo=3;else if(me.pp[c].number<=87 && me.pp[c].number>=84) logoo=4;else if(me.pp[c].number<=91 && me.pp[c].number>=88) logoo=5;else if(me.pp[c].number<=95 && me.pp[c].number>=92) logoo=6;else if(me.pp[c].number<=99 && me.pp[c].number>=96) logoo=7;else if(me.pp[c].number<=103 && me.pp[c].number>=100) logoo=8;else if(me.pp[c].number<=107 && me.pp[c].number>=104) logoo=9;}else if(me.pp[c].number<=135 && me.pp[c].number>=108) {logo=4;if(me.pp[c].number<=111 && me.pp[c].number>=108) logoo=1;else if(me.pp[c].number<=115 && me.pp[c].number>=112)else if(me.pp[c].number<=119 && me.pp[c].number>=116)logoo=3;else if(me.pp[c].number<=123 && me.pp[c].number>=120)logoo=4;else if(me.pp[c].number<=127 && me.pp[c].number>=124)logoo=5;else if(me.pp[c].number<=131 && me.pp[c].number>=128)logoo=6;else if(me.pp[c].number<=135 && me.pp[c].number>=132)logoo=7;}while(b<=computer.m){if(computer.pp[b].number<=35 && computer.pp[b].number>=0) /*假定电脑经过分析后出了第一张牌*/{lg=1;computer.pp[b].d[0]=1;if(computer.pp[b].number<=3 && computer.pp[b].number>=0){lgg=1;computer.pp[b].d[1]=1;}else if(computer.pp[b].number<=7 && computer.pp[b].number>=4){lgg=2;computer.pp[b].d[1]=2;}else if(computer.pp[b].number<=11 && computer.pp[b].number>=8){lgg=3;computer.pp[b].d[1]=3;}else if(computer.pp[b].number<=15 && computer.pp[b].number>=12){lgg=4;computer.pp[b].d[1]=4;}else if(computer.pp[b].number<=19 && computer.pp[b].number>=16){lgg=5;computer.pp[b].d[1]=5;}else if(computer.pp[b].number<=23 && computer.pp[b].number>=20) {lgg=6;computer.pp[b].d[1]=6;}else if(computer.pp[b].number<=27 && computer.pp[b].number>=24) {lgg=7;computer.pp[b].d[1]=7;}else if(computer.pp[b].number<=31 && computer.pp[b].number>=28) {lgg=8;computer.pp[b].d[1]=8;}else if(computer.pp[b].number<=35 && computer.pp[b].number>=32) {lgg=9;computer.pp[b].d[1]=9;}}else if(computer.pp[b].number<=71 && computer.pp[b].number>=36) {lg=2;computer.pp[b].d[0]=2;if(computer.pp[b].number<=39 && computer.pp[b].number>=36) {lgg=1;computer.pp[b].d[1]=1;}else if(computer.pp[b].number<=43 && computer.pp[b].number>=40) {lgg=2;computer.pp[b].d[1]=2;}else if(computer.pp[b].number<=47 && computer.pp[b].number>=44) {lgg=3;computer.pp[b].d[1]=3;}else if(computer.pp[b].number<=51 && computer.pp[b].number>=48) {lgg=4;computer.pp[b].d[1]=4;}else if(computer.pp[b].number<=55 && computer.pp[b].number>=52) {lgg=5;computer.pp[b].d[1]=5;}else if(computer.pp[b].number<=59 && computer.pp[b].number>=56) {lgg=6;computer.pp[b].d[1]=6;}else if(computer.pp[b].number<=63 && computer.pp[b].number>=60) {lgg=7;computer.pp[b].d[1]=7;}else if(computer.pp[b].number<=67 && computer.pp[b].number>=64) {lgg=8;computer.pp[b].d[1]=8;}else if(computer.pp[b].number<=71 && computer.pp[b].number>=68) {lgg=9;computer.pp[b].d[1]=9;}}else if(computer.pp[b].number<=107 && computer.pp[b].number>=72) {lg=3;computer.pp[b].d[0]=3;if(computer.pp[b].number<=75 && computer.pp[b].number>=72){lgg=1;computer.pp[b].d[1]=1;}else if(computer.pp[b].number<=79 && computer.pp[b].number>=76) {lgg=2;computer.pp[b].d[1]=2;}else if(computer.pp[b].number<=83 && computer.pp[b].number>=80) {lgg=3;computer.pp[b].d[1]=3;}else if(computer.pp[b].number<=87 && computer.pp[b].number>=84) {lgg=4;computer.pp[b].d[1]=4;}else if(computer.pp[b].number<=91 && computer.pp[b].number>=88) {lgg=5;computer.pp[b].d[1]=5;}else if(computer.pp[b].number<=95 && computer.pp[b].number>=92) {lgg=6;computer.pp[b].d[1]=6;}else if(computer.pp[b].number<=99 && computer.pp[b].number>=96) {lgg=7;computer.pp[b].d[1]=7;}else if(computer.pp[b].number<=103 && computer.pp[b].number>=100) {lgg=8;computer.pp[b].d[1]=8;}else if(computer.pp[b].number<=107 && computer.pp[b].number>=104) {lgg=9;computer.pp[b].d[1]=9;}}else if(computer.pp[b].number<=135 && computer.pp[b].number>=108) {lg=4;computer.pp[b].d[0]=4;if(computer.pp[b].number<=111 && computer.pp[b].number>=108) {lgg=1;computer.pp[b].d[1]=1;}else if(computer.pp[b].number<=115 && computer.pp[b].number>=112) {lgg=2;computer.pp[b].d[1]=2;}else if(computer.pp[b].number<=119 && computer.pp[b].number>=116) {lgg=3;computer.pp[b].d[1]=3;}else if(computer.pp[b].number<=123 && computer.pp[b].number>=120) {lgg=4;computer.pp[b].d[1]=4;}else if(computer.pp[b].number<=127 && computer.pp[b].number>=124) {lgg=5;computer.pp[b].d[1]=5;}else if(computer.pp[b].number<=131 && computer.pp[b].number>=128) {lgg=6;computer.pp[b].d[1]=6;}else if(computer.pp[b].number<=135 && computer.pp[b].number>=132) {lgg=7;computer.pp[b].d[1]=7;}}if(logo==lg) /*如果相等的话,那再进一步的判断,乓杠的判断*/if(logoo==lgg)pg++;ch[b].lg=lg; /*保存电脑手里的每张牌的信息*/ch[b].lgg=lgg;lg=0;lgg=0;b++;}if(pg==2) /*乓*/{sing=1;b=computer.m;while(b!=-1){if(strcmp(me.pp[c].k,computer.pp[b].k)==0) computer.pp[b].p=1;b--;}}if(pg==3) /*杠*/{sing=2;b=computer.m;while(b!=-1){if(strcmp(me.pp[c].k,computer.pp[b].k)==0) computer.pp[b].g=1;b--;}}f=0;while(f<computer.m) /*吃的判断*/{ if(ch[f].lg==logo && ch[f].lg!=4){if(ch[f+1].lgg-ch[f].lgg==1) /*顺吃*/if(ch[f].lgg-logoo==1){gp++;computer.pp[f].c=1;computer.pp[f+1].c=1;}if(ch[f].lgg-ch[f+1].lgg==-1) /*逆吃*/if(ch[f+1].lgg-logoo==-1){gp++;computer.pp[f].c=1;computer.pp[f+1].c=1;}if(ch[f].lgg-logoo==-1) /*中吃*/if(ch[f+1].lgg-logoo==1){gp++;computer.pp[f].c=1;computer.pp[f+1].c=1;}if(gp==1)break;}f++;}if(gp==1){sing=7;}pg=0;gp=0;b=0;}void rgznme(int c) /*本程序涵数的核心针对我的牌*/{ int b=0,lg,lgg,logo,logoo,pg=0,gp=0,cs=0,f=0;if(computer.pp[c].number<=35 && computer.pp[c].number>=0) {logo=1;if(computer.pp[c].number<=3 && computer.pp[c].number>=0) logoo=1;else if(computer.pp[c].number<=7 && computer.pp[c].number>=4) logoo=2;else if(computer.pp[c].number<=11 && computer.pp[c].number>=8) logoo=3;else if(computer.pp[c].number<=15 && computer.pp[c].number>=12) logoo=4;else if(computer.pp[c].number<=19 && computer.pp[c].number>=16) logoo=5;else if(computer.pp[c].number<=23 && computer.pp[c].number>=20) logoo=6;else if(computer.pp[c].number<=27 && computer.pp[c].number>=24) logoo=7;else if(computer.pp[c].number<=31 && computer.pp[c].number>=28) logoo=8;else if(computer.pp[c].number<=35 && computer.pp[c].number>=32) logoo=9;}else if(computer.pp[c].number<=71 && computer.pp[c].number>=36) {logo=2;if(computer.pp[c].number<=39 && computer.pp[c].number>=36) logoo=1;else if(computer.pp[c].number<=43 && computer.pp[c].number>=40)else if(computer.pp[c].number<=47 && computer.pp[c].number>=44) logoo=3;else if(computer.pp[c].number<=51 && computer.pp[c].number>=48) logoo=4;else if(computer.pp[c].number<=55 && computer.pp[c].number>=52) logoo=5;else if(computer.pp[c].number<=59 && computer.pp[c].number>=56) logoo=6;else if(computer.pp[c].number<=63 && computer.pp[c].number>=60) logoo=7;else if(computer.pp[c].number<=67 && computer.pp[c].number>=64) logoo=8;else if(computer.pp[c].number<=71 && computer.pp[c].number>=68) logoo=9;}else if(computer.pp[c].number<=107 && computer.pp[c].number>=72) {logo=3;if(computer.pp[c].number<=75 && computer.pp[c].number>=72) logoo=1;else if(computer.pp[c].number<=79 && computer.pp[c].number>=76) logoo=2;else if(computer.pp[c].number<=83 && computer.pp[c].number>=80) logoo=3;else if(computer.pp[c].number<=87 && computer.pp[c].number>=84) logoo=4;else if(computer.pp[c].number<=91 && computer.pp[c].number>=88) logoo=5;else if(computer.pp[c].number<=95 && computer.pp[c].number>=92) logoo=6;else if(computer.pp[c].number<=99 && computer.pp[c].number>=96) logoo=7;else if(computer.pp[c].number<=103 && computer.pp[c].number>=100) logoo=8;else if(computer.pp[c].number<=107 && computer.pp[c].number>=104) logoo=9;}else if(computer.pp[c].number<=135 && computer.pp[c].number>=108) {logo=4;if(computer.pp[c].number<=111 && computer.pp[c].number>=108) logoo=1;else if(computer.pp[c].number<=115 && computer.pp[c].number>=112)else if(computer.pp[c].number<=119 && computer.pp[c].number>=116)logoo=3;else if(computer.pp[c].number<=123 && computer.pp[c].number>=120)logoo=4;else if(computer.pp[c].number<=127 && computer.pp[c].number>=124)logoo=5;else if(computer.pp[c].number<=131 && computer.pp[c].number>=128)logoo=6;else if(computer.pp[c].number<=135 && computer.pp[c].number>=132)logoo=7;}while(b<=me.m){if(me.pp[b].number<=35 && me.pp[b].number>=0) /*我分析后出了第一张牌*/ {lg=1;me.pp[b].d[0]=1;if(me.pp[b].number<=3 && me.pp[b].number>=0){lgg=1;me.pp[b].d[1]=1;}else if(me.pp[b].number<=7 && me.pp[b].number>=4){lgg=2;me.pp[b].d[1]=2;}else if(me.pp[b].number<=11 && me.pp[b].number>=8){lgg=3;me.pp[b].d[1]=3;}else if(me.pp[b].number<=15 && me.pp[b].number>=12){lgg=4;me.pp[b].d[1]=4;}else if(me.pp[b].number<=19 && me.pp[b].number>=16){lgg=5;me.pp[b].d[1]=5;}else if(me.pp[b].number<=23 && me.pp[b].number>=20){lgg=6;me.pp[b].d[1]=6;}else if(me.pp[b].number<=27 && me.pp[b].number>=24) {lgg=7;me.pp[b].d[1]=7;}else if(me.pp[b].number<=31 && me.pp[b].number>=28) {lgg=8;me.pp[b].d[1]=8;}else if(me.pp[b].number<=35 && me.pp[b].number>=32) {lgg=9;me.pp[b].d[1]=9;}}else if(me.pp[b].number<=71 && me.pp[b].number>=36) {lg=2;me.pp[b].d[0]=2;if(me.pp[b].number<=39 && me.pp[b].number>=36) {lgg=1;me.pp[b].d[1]=1;}else if(me.pp[b].number<=43 && me.pp[b].number>=40) {lgg=2;me.pp[b].d[1]=2;}else if(me.pp[b].number<=47 && me.pp[b].number>=44) {lgg=3;me.pp[b].d[1]=3;}else if(me.pp[b].number<=51 && me.pp[b].number>=48) {lgg=4;me.pp[b].d[1]=4;}else if(me.pp[b].number<=55 && me.pp[b].number>=52) {lgg=5;me.pp[b].d[1]=5;}else if(me.pp[b].number<=59 && me.pp[b].number>=56) {lgg=6;me.pp[b].d[1]=6;}else if(me.pp[b].number<=63 && me.pp[b].number>=60) {lgg=7;me.pp[b].d[1]=7;}else if(me.pp[b].number<=67 && me.pp[b].number>=64) {lgg=8;me.pp[b].d[1]=8;}else if(me.pp[b].number<=71 && me.pp[b].number>=68) {lgg=9;me.pp[b].d[1]=9;}}else if(me.pp[b].number<=107 && me.pp[b].number>=72) {lg=3;me.pp[b].d[0]=3;if(me.pp[b].number<=75 && me.pp[b].number>=72){lgg=1;me.pp[b].d[1]=1;}else if(me.pp[b].number<=79 && me.pp[b].number>=76) {lgg=2;me.pp[b].d[1]=2;}else if(me.pp[b].number<=83 && me.pp[b].number>=80) {lgg=3;me.pp[b].d[1]=3;}else if(me.pp[b].number<=87 && me.pp[b].number>=84) {lgg=4;me.pp[b].d[1]=4;}else if(me.pp[b].number<=91 && me.pp[b].number>=88) {lgg=5;me.pp[b].d[1]=5;}else if(me.pp[b].number<=95 && me.pp[b].number>=92) {lgg=6;me.pp[b].d[1]=6;}else if(me.pp[b].number<=99 && me.pp[b].number>=96) {lgg=7;me.pp[b].d[1]=7;}else if(me.pp[b].number<=103 && me.pp[b].number>=100) {lgg=8;me.pp[b].d[1]=8;}else if(me.pp[b].number<=107 && me.pp[b].number>=104) {lgg=9;me.pp[b].d[1]=9;}}else if(me.pp[b].number<=135 && me.pp[b].number>=108) {lg=4;me.pp[b].d[0]=4;if(me.pp[b].number<=111 && me.pp[b].number>=108) {lgg=1;me.pp[b].d[1]=1;}else if(me.pp[b].number<=115 && me.pp[b].number>=112) {lgg=2;me.pp[b].d[1]=2;}else if(me.pp[b].number<=119 && me.pp[b].number>=116) {lgg=3;me.pp[b].d[1]=3;}else if(me.pp[b].number<=123 && me.pp[b].number>=120) {lgg=4;me.pp[b].d[1]=4;}else if(me.pp[b].number<=127 && me.pp[b].number>=124) {lgg=5;me.pp[b].d[1]=5;}else if(me.pp[b].number<=131 && me.pp[b].number>=128) {lgg=6;me.pp[b].d[1]=6;}else if(me.pp[b].number<=135 && me.pp[b].number>=132) {lgg=7;me.pp[b].d[1]=7;}}}}void istwo(testt)int testt[];{ if(testt[0]==testt[1])second++;}void isthree(testt,n)int testt[],n=0;{ int i,j,flage=0,lianx=0,same=0;n=n/3;for(j=0;j<n;j++){for(i=j*3;i<2+j*3;i++){if(testt[i]==testt[i+1])same++;if(testt[i+1]-testt[i]==1)lianx++;}if(same==2)threes++;if(lianx==2)threes++;same=0;lianx=0;}}void panduan() /*本程序的精髓*/{int data[14];int pw[14];int pt[14];int pi[14];int pf[14];int test[12];int jj,w,mm,nn,tpp=0,lp=0,ww=0,tt=0,ii=0,ff=0;ill=0; for(jj=0;jj<=me.m;jj++){if(me.pp[jj].d[0]==1)data[jj]=me.pp[jj].d[1];if(me.pp[jj].d[0]==2)data[jj]=me.pp[jj].d[1]+10;if(me.pp[jj].d[0]==3)data[jj]=me.pp[jj].d[1]+20;if(me.pp[jj].d[0]==4)data[jj]=me.pp[jj].d[1]+30;}if(logo==2)w=logoo+10;if(logo==3)w=logoo+20;if(logo==4)w=logoo+30;data[computer.m+1]=w;for(mm=0;mm<=computer.m;mm++)for(nn=mm;nn<=computer.m;nn++)if(data[mm]>data[nn+1]){tpp=data[mm];data[mm]=data[nn+1];。
Java五子棋源代码

Java五子棋源代码本程序共有3个类,下载后将三个类复制到三个记事本里然后重名记事本(为了阅读方便分三个文件),其中main()方法在StartChessJFrame 类中。
我是菜鸟,交流QQ:609429837import java.awt.Color;public class Point {private int x;//棋盘中X的索引private int y;//棋盘中Y的索引private Color color;//颜色public static final int DIAMETER = 30;//直径public Point(int x,int y,Color color){ this.x=x;this.y=y;this.color =color;}//拿到棋盘中的Y索引public int getX(){return x;}public int getY(){return y;}//得到颜色public Color getColor(){return color;}}import javax.swing.*;import java.awt.*;import java.awt.event.MouseListener; importjava.awt.event.MouseMotionListener; import java.awt.event.MouseEvent;/*五子棋-棋盘类*/public class ChessBoard extends JPanel implements MouseListener {public static final int MARGIN = 30;//边距protected static final int GRID_SPAN = 35;//网格间距public static final int ROWS = 10;//棋盘行数public static final int COLS = 10;//棋盘列数Point[] chessList = new Point[(ROWS+1)*(COLS+1)];//初始化每个数组元素为nullboolean isBlack = true;//默认开始是黑棋先下boolean gameOver = false;//游戏是否结束int chessCount;//当前棋盘棋子的个数int xIndex,yIndex;//当前刚下的棋子的索引public ChessBoard(){super.setBackground(Color.ORANGE);//setBackground(Color.ORANGE);//设置背景颜色为橘黄色addMouseListener(this);//添加监听器addMouseMotionListener(new MouseMotionListener(){//匿名内部类public void mouseDragged(MouseEvent e){}public void mouseMoved(MouseEvent e){int x1 = (e.getX()- MARGIN +GRID_SPAN/2)/GRID_SPAN;//将鼠标单击的坐标位置转换成网格索引int y1 = (e.getY()- MARGIN +GRID_SPAN/2)/GRID_SPAN;//游戏已经结束,落在棋盘外,x、y 位置已经有棋子存在,不能下if(x1<0||x1>ROWS||y1<0||y1>COLS||gameOv er||findChess(x1,y1))setCursor(newCursor(Cursor.DEFAULT_CURSOR));//设置成默认形状elsesetCursor(newCursor(Cursor.HAND_CURSOR));//设置成手型}});}//绘制public void paintComponent(Graphics g){ super.paintComponent(g);//画棋类for(int i=0;i<=ROWS;i++){//画横线g.drawLine(MARGIN,MARGIN+i*GRID_SPAN,MARGIN+COLS*GRID_SPAN,MARGIN+i*GRID_SPAN);}for(int i=0;i<=COLS;i++){//画直线g.drawLine(MARGIN+i*GRID_SPAN,MARGIN,MA RGIN+i*GRID_SPAN,MARGIN+ROWS*GRID_SPAN);}//画棋子for(int i=0;i<chessCount;i++) {int xPos = chessList[i].getX()*GRID_SPAN+MARGIN;//网络交叉点的x坐标int yPos = chessList[i].getY()*GRID_SPAN+MARGIN;//网络交叉点的y坐标g.setColor(chessList[i].getColor());//设置颜色g.fillOval(xPos-Point.DIAMETER/2, yPos-Point.DIAMETER/2, Point.DIAMETER, Point.DIAMETER);//标记最后一个棋子的红矩形框if(i == chessCount -1){//最后一个棋子g.setColor(Color.red);g.drawRect(xPos - Point.DIAMETER/2,yPos-Point.DIAMETER/2,Po int.DIAMETER,Point.DIAMETER);}}}//鼠标按键在组建上按下时调用public void mousePressed(MouseEvent e){ //游戏已经结束,不能下if(gameOver)return;String colorName = isBlack ?"黑棋":"白棋";xIndex = (e.getX() - MARGIN + GRID_SPAN/2)/GRID_SPAN;//将鼠标单击的坐标位置转换成网格索引yIndex = (e.getY() - MARGIN + GRID_SPAN/2)/GRID_SPAN;//落在棋盘外,不能下if(xIndex <0 || xIndex > ROWS || yIndex < 0 || yIndex > COLS)return;//x、y位置都已经有棋子存在,不能下if(findChess(xIndex , yIndex))return;Point ch = new Point(xIndex,yIndex,isBlack ? Color.black:Color.white);chessList[chessCount++] = ch;repaint();//通知系统重新绘制if(isWin()){//给出胜利信息,不能再继续下棋String msg = String.format("恭喜,%s赢了!", colorName);JOptionPane.showMessageDialog(this, msg);gameOver = true;}isBlack = !isBlack;}//覆盖MouseListener的方法public void mouseClicked(MouseEvent e){ }//鼠标按键在组件上单击(按下并释放)时调用public void mouseEntered(MouseEvent e){ }//鼠标进入到组件上时调用public void mouseExited(MouseEvent e){ }//鼠标离开组件时调用public void mouseReleased(MouseEvent e){ }//鼠标离开组件时调用//在棋子数组中查找是否有索引为x、y的棋子存在private boolean findChess(int x, int y){ for(Point c : chessList){if(c !=null && c.getX() == x && c.getY() == y)return true;}return false;}//判定哪方赢private boolean isWin(){int continueCount =1;//连续棋子的个数//横向向西寻找for(int x = xIndex-1; x>=0;x--){Color c = isBlack ? Color.black : Color.white;if(getChess(x,yIndex,c) !=null){continueCount++;}elsebreak;}//横向向东寻找for(int x =xIndex+1;x<=ROWS;x++){ Color c = isBlack ? Color.black : Color.white;if(getChess(x,yIndex,c) !=null){continueCount++;}elsebreak;}//判定记录数大于等于五,即表示此方取胜if(continueCount>=5){return true;}elsecontinueCount =1;//继续另一种情况的搜索:纵向//纵向向上寻找for(int y = yIndex - 1; y >= 0; y--){ Color c =isBlack ? Color.black : Color.white;if(getChess(xIndex,y,c) !=null){continueCount++;}elsebreak;}//纵向向下寻找for(int y = yIndex + 1; y<=ROWS; y++){ Color c = isBlack ? Color.black : Color.white;if(getChess(xIndex,y,c)!=null){continueCount++;}elsebreak;}if(continueCount>=5){return true;}elsecontinueCount =1;//继续另一种情况的搜索:斜向//东北寻找for(int x = xIndex + 1,y=yIndex-1; y>=0 && x<=COLS; x++,y--){Color c = isBlack ? Color.black : Color.white;if(getChess(x,y,c)!=null){continueCount++;}elsebreak;}//西南寻找for(int x = xIndex - 1,y=yIndex+1; y<=ROWS && x>=0; x--,y++){Color c = isBlack ? Color.black : Color.white;if(getChess(x,y,c)!=null){continueCount++;}elsebreak;}if(continueCount >=5){return true;}elsecontinueCount = 1;//继续另一种情况的搜索:斜向//西北寻找for(int x = xIndex - 1,y = yIndex-1; y>=0 && x>=0; x--,y--){Color c = isBlack ? Color.black : Color.white;if(getChess(x,y,c)!=null){continueCount++;}elsebreak;}//西南寻找for(int x = xIndex + 1,y=yIndex+1; y<=ROWS && x<=COLS; x++,y++){Color c = isBlack ? Color.black : Color.white;if(getChess(x,y,c)!=null){continueCount++;}elsebreak;}if(continueCount >=5){return true;}elsecontinueCount = 1;return false;}private Point getChess(int xIndex, intyIndex, Color color){for(Point c: chessList){if(c !=null && c.getX() == xIndex && c.getY() == yIndex && c.getColor() == color)return c;}return null;}public void restartGame(){//清除棋子for(int i=0; i< chessList.length; i++) chessList[i]=null;//恢复游戏相关的变量值isBlack = true;gameOver = false;//游戏是否结束chessCount = 0;//当前棋盘的棋子个数//System.out.println(this.toString());//repaint();}//悔棋public void goback(){if (chessCount == 0)return;chessList[chessCount-1]=null;chessCount--;if(chessCount >0){xIndex = chessList[chessCount -1].getX();yIndex = chessList[chessCount -1].getY();}isBlack = !isBlack;//repaint();}//Dimension:矩形public Dimension getPreferredSize(){ return new Dimension (MARGIN*2 + GRID_SPAN*COLS,MARGIN*2 + GRID_SPAN*ROWS);}}import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;public class StartChessJFrame extends JFrame {private ChessBoard chessBoard;//对战面板private JPanel toolbar;//工具条面板private JButton startButton;private JButton backButton;private JButton exitButton;//“重新开始”按钮,“悔棋”按钮,“退出”按钮private JMenuBar menuBar;//菜单栏private JMenu sysMenu;//系统菜单private JMenuItem startMenuItem;private JMenuItem exitMenuIatem;private JMenuItem backMenuItem;//“重新开始”,“退出”和“悔棋”菜单项public StartChessJFrame(){setTitle("单机版五子棋");//设置标题chessBoard =new ChessBoard();//初始化面板对象//创建和添加菜单menuBar = new JMenuBar();//初始化菜单栏sysMenu = new JMenu("系统");//初始化菜单startMenuItem = new JMenuItem("重新开始");exitMenuIatem = new JMenuItem("退出");backMenuItem = new JMenuItem("悔棋");//初始化菜单项sysMenu.add(startMenuItem);//将三个菜单项添加到菜单上sysMenu.add(backMenuItem);sysMenu.add(exitMenuIatem);MyItemListener lis = new MyItemListener();//初始化按钮事件监听器内部类this.startMenuItem.addActionListener(li s);//将三个菜单项注册到事件监听器上backMenuItem.addActionListener(lis);exitMenuIatem.addActionListener(lis);menuBar.add(sysMenu);//将“系统”菜单添加到菜单栏上setJMenuBar(menuBar);//将menuBar设置为菜单栏toolbar =new JPanel();//工具面板实例化startButton = new JButton("重新开始");//三个按钮初始化backButton = new JButton("悔棋");exitButton = new JButton("退出");toolbar.setLayout(newFlowLayout(FlowLayout.LEFT));//将工具面板按钮用FlowLayout布局toolbar.add(startButton);//将三个按钮添加到工具面板上toolbar.add(backButton);toolbar.add(exitButton);startButton.addActionListener(lis);//将三个按钮注册监听事件backButton.addActionListener(lis);exitButton.addActionListener(lis);add(toolbar,BorderLayout.SOUTH);//将工具面板布局到界面“南”方也就是下面add(chessBoard);//将面板对象添加到窗体上setDefaultCloseOperation(JFrame.EXIT_ON _CLOSE);//设置界面关闭事件//setSize(600,650);pack();//自适应大小}//事件监听器内部类private class MyItemListener implements ActionListener{public void actionPerformed(ActionEvent e){Object obj = e.getSource();//取得事件源if(obj == StartChessJFrame.this.startMenuItem || obj ==startButton){//重新开始//JFiveFrame.this //内部类引用外部类System.out.println("重新开始...");chessBoard.restartGame();repaint();}else if (obj == exitMenuIatem || obj == exitButton){System.exit(0);//结束应用程序}else if (obj == backMenuItem || obj == backButton){//悔棋System.out.println("悔棋...");chessBoard.goback();repaint();}}}public static void main(String[] args){ StartChessJFrame f = newStartChessJFrame();//创建主框架f.setVisible(true);//显示主框架}}。
Python扑克牌21点游戏实例代码

Python扑克牌21点游戏实例代码废话还是说太多了直接上代码import randomimport sys# 牌⾯列表card_code = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']# 花⾊列表card_symbol = ['♦', '♣', '♥', '♠']# 游戏初始化def init(player_count):# 根据玩家数来⽣成玩家记牌器player_group = [[] for _ in range(player_count)]# 根据玩家数来⽣成玩家是否要牌player_isWant = [True for _ in range(player_count)]# ⽣成元素1~52的列表 (去掉⼤⼩⿁的扑克牌[52张])poker = list(range(1, 53))# ⽤random的shuffle函数对列表打乱顺序 (洗牌)random.shuffle(poker)# 返回玩家组玩家是否要牌乱序52张扑克return player_group, player_isWant, poker# 打印玩家点数def print_player_point(player_group):# 存放玩家点数player_point = []# 遍历每⼀位玩家for index in range(len(player_group)):# 打印每位玩家的牌和点数print("-------玩家"+str(index+1)+"------")# 初始化玩家点数如果含有牌A 因为A可视为1点或11点则有两种点数current_player = [0, 0]# 遍历每位玩家的⼿牌for card in player_group[index]:"""核⼼代码由于牌⾯的数字是从1到52 所以牌⾯要先减1再求余才是牌⾯列表真正的下标若玩家抽到牌为15 即牌⾯为15 - 13 = 2 且按花⾊顺序为♣即2♣牌⾯ 15 - 1 = 14 再 14 % 13 = 1 这个就是对应牌⾯列表的第⼆位元素即2花⾊ 15 - 1 = 14 再 14 / 13 = 1 对应花⾊列表第⼆位元素即♣"""# 获取牌⾯和花⾊下标code_index = int((card - 1) % 13)symbol_index = int((card - 1) / 13)# 打印玩家牌信息print(card_code[code_index] + card_symbol[symbol_index], end="\t")# 如果牌⾯含有A 则添加不同点数1和11if (code_index + 1) == 1:current_player[0] += 1current_player[1] += 11# 如果牌⾯不含A 则添加相同点数else:current_player[0] += code_index + 1current_player[1] += code_index + 1# 如果两个点数⼀致则打印⼀个点数if current_player[0] == current_player[1]:print("点数为"+str(current_player[0])+"点")# 否则打印两个点数else:print("点数为"+str(current_player[0])+"点或"+str(current_player[1]))# 添加当前玩家点数player_point.append(current_player)# 返回所有玩家点数return player_point# 玩游戏def play_game():# 打印游戏规则print("-------21点游戏------")print("---A可看做1点或11点---")# 死循环⼀直进⾏游戏while True:# 初始化玩家数为0player_count = 0# 当玩家数⼩于等于1或⼤于5时继续询问while player_count <= 1 or player_count > 5:# 询问玩家数print("有多少位玩家?(2~5位)", end="")# 获取控制台输⼊的数字⽆验证输⼊若输⼊⾮数字程序直接报错player_count = int(input())# 初始化游戏返回玩家组玩家是否要牌乱序52张扑克player_group, player_isWant, poker = init(player_count)# 开始发牌先为每位玩家发两张牌循环玩家数for index in range(player_count):for i in range(2):# pop() 函数⽤于移除列表中的⼀个元素(默认最后⼀个元素)并且返回该元素的值。
24点纸牌游戏源代码

#include <stdio.h>#include <windows.h>#pragma comment ( lib, "Winmm.lib")// 0,1,2,3分别代表+,-,*,/float OperVisual(float num1,float num2,int oper);//双目运算int Show(float num1,float num2,float num3,float num4,int i);//交换率运算并显示void main(){int i1,i2,i3,i4,i=0;unsigned int s1,s2;float num[4];//分别代表输入的4个数puts("Please enter the number 4:");scanf("%f%f%f%f",&num[0],&num[1],&num[2],&num[3]);s1=timeGetTime();for(i1=0;i1<4;i1++){for(i2=0;i2<4;i2++){for(i3=0;i3<4;i3++){for(i4=0;i4<4;i4++){if(i1!=i2&&i1!=i3&&i1!=i4&&i2!=i3&&i2!=i4&&i3!=i4)i=Show(num[i1],num[i2],num[i3],num[i4],i);}}}}if(!i) printf("No answer !");s2=timeGetTime();printf("\ntime consuming:%dms\n",s2-s1);getchar();getchar();}int Show(float num1,float num2,float num3,float num4,int i){int oper1,oper2,oper3;//分别代表3个操作符char OperShow[4]={'+','-','*','/'};//0,1,2,3float end1,end2,end3;for(oper1=0;oper1<4;oper1++){//第一个运算符end1=OperVisual(num1,num2,oper1);//将第一个数进行4次运算for(oper2=0;oper2<4;oper2++){//第二个运算符end2=OperVisual(end1,num3,oper2);//将前两个数的结果和第三个数进行4次运算for (oper3=0;oper3<4;oper3++){//第三个运算符end3=OperVisual(end2,num4,oper3);//将前三个数的结果和第三个数进行4次运算if(end3==24){if(oper1<=1&&oper2>=2)//如果第一个运算符为+或-第二个运算符为*或/printf("(%.f%c%.f)%c%.f%c%.f=24\n",num1,OperShow[oper1],num2,OperShow[oper2],nu m3,OperShow[oper3],num4),i++;else if(oper1<=1&&oper2<=1&&oper3>=2)printf("(%.f%c%.f%c%.f)%c%.f=24\n",num1,OperShow[oper1],num2,OperShow[oper2],nu m3,OperShow[oper3],num4),i++;else if(oper1>=2&&oper2<=1&&oper3>=2)printf("(%.f%c%.f%c%.f)%c%.f=24\n",num1,OperShow[oper1],num2,OperShow[oper2],nu m3,OperShow[oper3],num4),i++;elseprintf("%.f%c%.f%c%.f%c%.f=24\n",num1,OperShow[oper1],num2,OperShow[oper2],num3,Op erShow[oper3],num4),i++;}}}}return i;}float OperVisual(float num1,float num2,int oper){float result;switch(oper){case 0:result=num1+num2;break;case 1:result=num1-num2;break;case 2:result=num1*num2;break;case 3:result=num1/num2;break;}return result;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于棋牌游戏源代码开放
在现今的棋牌游戏运营行业如火如荼的阶段,为了减少与避免一些初次接触此行业的运营商被一些产品开发商公司蒙骗上当,特此编写以下的一些说明和答疑,花点时间认真阅读和思考,可能会为您减少巨大的损失。
深圳市壹柒游网络科技有限公司为您全面解答。
1.对运营商开放源代码,可以使运营商根据运营环境与实际情况调节平台,而不被产品提供商所牵制:
运营棋牌游戏,本质上做的事情就是为玩家提供最好的服务和游戏娱乐环境,玩家在这里玩开心,才会留下来,并为拉入更加多的朋友进来,从而才会使你赢取利润,是相辅相成的,是一个因果关系。
而玩家的需求日新月异,你必须根据实际的环境,调节必要的平台功能,例如注册登录策略,游戏奖励策略,游戏规则修改策略,引导购买会员策略,引导购买道具策略等等。
不同的运营时期,所进行的定制策略和程度是不一样的,所以运营商几乎每天都有修改定制部分的欲望与需求。
若运营没有得到源代码,将需要进行一系列繁琐过程:联系开发商,商讨价格,付款,等待开发,然后等待漫长的交付测试阶段。
市场机遇是不会等您的,您说这过程,使您错过了多少发展的机遇呢?
从事实也得到证明,横观现今互联网的游戏运营商,从不对运营商开放源代码的棋牌站点,运营成功的又能有多少呢?
答案是几乎没有。
再看使用了开放源代码的成功而且还保持不断发展的站点呢?数目是非常多的,具体的资料可以到网上搜索就能得到,这里我们就不逐一提及了。
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?
2.对运营商开放源代码,不需要为二次开发承担昂贵的开发费用:
拥有了产品源代码,才可以进行二次开发,才可以时刻根据市场的需求的变化而立即变化。
而对于一些不牵涉到高级技术能力的功能的修改,也需要开发商加入的话,容易造成运营策略的泄漏,被其他人捷足先登了。
而且开发商除了收取开发成本的人员费用外,还需要收取您的人员管理成本,市场拓展成本,还有公司的收入等。
而这一切的成本,若运营商有了系统源代码后,您的运营成本将会减少很多,而这些成本费用的节省,可以使您投入到市场营销方面,赢取更加多的发展机遇。
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?
3.对运营商开放源代码,可以使游戏系统更加健壮:
俗语说,一人智短,二人智长。
那么更加多的人呢?是不是应该更加更加智长呢?答案当然是肯定的。
开放源代码的系统,经历着这么多的运营商的实际运营考验,实际进行的功能增加和功能修改,并被众多的技术人员的查阅和审核,您说,这样的系统是不是比不开放源代码的系统更加健壮和问题,漏洞问题是否更加容易发现和及时修补。
而对于不开放源代码的产品商,他们是没有精力顾及到那么多的运营商,也没有这样的人力投入进行到错误的检测和修正方面。
所以,他们的系统只是把错误隐藏起来,使您无法察觉而已,而到了错误产生的时候,您的损失就无法避免了。
让我们一起开一个实际的例子吧,微软的Windows系统与开源的Linux系统,那个更加稳定,那个更加健壮?Linux经历这众多的开发人员共同研究,共同除错,是一个非常稳定的系统。
现今网络上,几乎一切超大型的门户网站,新闻网站,社区网站做服务器系统的,几乎都是清一色的开源Linux服务器系统,谁会用Windows系统的呢?
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?
4.对运营商开放源代码,可以使游戏运营商更加迅速适应市场的变化:
玩家的需求日新月异,你必须根据实际的环境,调节必要的平台功能,例如注册登录策略,游戏奖励策略,游戏规则修改策略,引导购买会员策略,引导购买道具策略等等。
不同的运营时期,所进行的定制策略和程度是不一样的,所以运营商几乎每天都有修改定制部分的欲望与需求。
若运营没有得到源代码,将需要进行一系列繁琐过程:联系开发商,商讨价格,付款,等待开发,然后等待漫长的交付测试阶段。
市场机遇是不会等您的,您说这过程,使您错过了多少发展的机遇呢?
5.对运营商开放源代码,可以使运营商更加放心,避免被开发商植入后门程序的顾虑:
开发源代码,可以用代码事实证明,系统是没有植入后门程序的。
若没有提供源代码,您又怎么知道和证明开发商没有植入后门程序呢?您就真的完全放心地用这样的产品去发展吗?就不怕等您发展到一定的阶段的时候,被别人利用后门进入您的系统进行破坏吗?您的一切不就被后门程序说要挟和控制了吗?安全又从而而来呢?
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?
6.对运营商开放源代码,可以使运营商的平台更加容易成功,更加具有价值:
棋牌系统运营的某个程度,必定会吸引某些投资商,收购商的兴趣,会提出对您的网站进行投资或者收购。
而若您的运营系统是没有代码的,您觉得投资商与收购商还会那么傻给您进行投资与收购吗?是绝对不会的,因为没有源代码,无论如何成功,都只是个空壳,没有一点实际价值和意义,运营商只能谋求在游戏运作阶段每月的玩家消费收入。
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?
一些疑问回答:
1.开放源代码的系统,数据是如何保证安全的呢?
一套棋牌游戏系统,是由服务器与客户端组合而成的。
服务器,是运作在您具有完全控制权的机器里,一切的修改,更新,维护,替换工作都是在您的知情,可控的范围内进行的。
客户端,是供玩家下载的,运行在玩家的电脑里。
有些运营上会有这样的疑问,游戏代码都开放了,那玩家不就更加容易编写木马和外挂程序了吗?其实这个是个极端除错误的认识,其实开放代码的系统,更加不容易出现木马和外挂程序,请接着看以下的一些分析和概念说明。
在游戏系统中,游戏客户端承担的角色只是负责玩家的输入与服务器的数据的显示,还有一些辅助逻辑功能的预先计算功能。
例如服务器告诉客户端,某某玩家干了些什么事情,客户端就简单的用友好的视觉界面表现给玩家而已。
又例如玩家要出某个牌,就发个消息通知服务器,我要出什么什么牌了,请代我告诉其他人,客户端是以这样的一个模式运作的。
我们不要忘记了,这一切的可执行的行为的合法性,正确性,都是由服务器效验和执行,而不是客户端说干嘛就能干嘛的。
开放源代码的程序,可以供运营商检测系统到底是否这样做了,服务器有没有做验证(备注:某些不开发代码的系统,为了编码的简单和减少开发时间和工作量,是不会在服务器严格的验证,导致的后果就是客户端要干什么就什么,导致服务器的数据混乱,系统不稳定)
而在整个游戏系统中,服务器程序的修改与替换,都是由您的控制而完成的,所以,只要保证了服务器环境的安全,就等于保证了整个游戏系统的安全,保证不会被玩家加入木马程序与外挂程序了。
2.既然这样,那些不提供代码的开发商为什么就不能提供源代码呢?
有几个原因的,导致他们不提供源代码:
a)系统源代码的撷取有非法性,非本公司的技术开发成果产品,是从某些不见得人的渠道获得的。
若提供源代码的话,将
会被被法律控告,遭受巨额赔款,而不提供源代码,将使控告流程无法取证,也就无法被控告了,也就没有巨额赔款了。
b)为了控制运营商,使运营上的发展与自己紧密绑定在一起,为自己日后的发展做铺垫。
c)为了获取运营商更多的利润,若是一个有了1000人的游戏平台,运营商没有代码只能给开发商来开发,那岂不是任由
开发商宰割?都有可以直接吞并的可能性存在!
d)代码具有严重的安全性,若公开的了源代码,将会被众多的技术开发人员阅读,导致爆发出系统漏洞无法修复,影响巨
大。
请各位运营商醒醒吧,因为以上的这些原因,他们是不会为您提供源代码的,就算您愿意付出昂贵的报酬代价,也是不可以的,因为涉及到的是他的命脉哦,他们知道了若提供了源代码后,等于自取灭亡,遭受巨额赔款,您觉得他们会为您提供源代码吗?。