关于棋牌游戏源代码开放
- 格式:docx
- 大小:15.44 KB
- 文档页数:4
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();}}。
中国象棋python代码下面是一个简单的中国象棋的Python 代码示例:# 定义棋盘# 绘制棋盘def draw_board():for row in chessboard:for piece in row:print(piece, end=' ')print()# 判断是否在棋盘内def is_valid_move(x, y):return 0 <= x < 9 and 0 <= y < 10# 判断移动是否合法def is_valid_move(x1, y1, x2, y2):piece = chessboard[y1][x1]target = chessboard[y2][x2]if piece == ' ':return Falseif piece == '車' or piece == '車':if x1 != x2 and y1 != y2:return Falseif x1 == x2:min_y, max_y = (y1, y2) if y1 < y2 else (y2, y1)for y in range(min_y + 1, max_y):if chessboard[y][x1] != ' ':return Falseif y1 == y2:min_x, max_x = (x1, x2) if x1 < x2 else (x2, x1)for x in range(min_x + 1, max_x):if chessboard[y1][x] != ' ':return Falseif piece == '馬' or piece == '馬':dx = abs(x2 - x1)dy = abs(y2 - y1)if (dx == 1 and dy == 2) or (dx == 2 and dy == 1): return Truereturn Falseif piece == '象' or piece == '相':if y2 > 4 and (y2 - y1) % 2 != 0:return Falseif abs(x2 - x1) != 2 or abs(y2 - y1) != 2:return Falseif chessboard[(y1 + y2) // 2][(x1 + x2) // 2] != ' ': return Falseif piece == '士' or piece == '士':if x2 < 3 or x2 > 5:return Falseif y2 < 7 or y2 > 9:return Falseif abs(x2 - x1) != 1 or abs(y2 - y1) != 1: return Falseif piece == '帥' or piece == '将':if x2 < 3 or x2 > 5:return Falseif y2 < 0 or y2 > 2:return Falseif abs(x2 - x1) + abs(y2 - y1) != 1:return Falseif piece == '兵':if y1 < 5 and y2 != y1 - 1:return Falseif y1 >= 5 and (x1 != x2 or y2 != y1 - 1):return Falseif piece == '卒':if y1 > 4 and y2 != y1 + 1:return Falseif y1 <= 4 and (x1 != x2 or y2 != y1 + 1):return Falseif target == '帥' or target == '将':if piece == '卒' or piece == '兵':if y2 > 2:return Falseif piece == '兵' or piece == '卒':if y2 < 7:return Falsereturn True# 移动棋子def move_piece(x1, y1, x2, y2):if is_valid_move(x1, y1, x2, y2):piece = chessboard[y1][x1]chessboard[y2][x2] = piecechessboard[y1][x1] = ' 'else:print("Invalid move!")# 游戏循环def game_loop():while True:draw_board()player_input = input("请输入移动的起始位置和目标位置,以逗号分隔(例如:2,1,2,3):")positions = player_input.split(',')if len(positions) != 4:print("请输入正确的起始位置和目标位置!")continuex1, y1, x2, y2 = map(int, positions)if not is_valid_move(x1, y1) or not is_valid_move(x2, y2):print("请输入正确的起始位置和目标位置!")continuemove_piece(x1, y1, x2, y2)# 启动游戏game_loop()这是一个简单的中国象棋游戏代码示例,包括棋盘的绘制、棋子移动的判断和执行等功能。
作者:dlut_608_#4 来源:本站整理发布时间:2005-11-24 17:22:42123;if(point[guard2][guard1]<=16){g.setColor(255,255,0);g.fillArc(x-chessR+guard1*cellWidth,x-chessR+guard2*cellWidth,2*chessR,2*chessR,0,360);g.setColor(0x00000000);g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE));g.drawString(word[guard2][guard1],x+guard1*cellWidth,x+chessR+guard2*cellWidth,Graphics.HCENTER|Graphics.BOTTOM); }}if(g2%2==0){if(point[guard2][guard1]>16){g.setColor(0,255,0);g.fillArc(x-chessR+guard1*cellWidth,x-chessR+guard2*cellWidth,2*chessR,2*chessR,0,360);g.setColor(0x00000000);g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE));g.drawString(word[guard2][guard1],x+guard1*cellWidth,x+chessR+guard2*cellWidth,Graphics.HCENTER|Graphics.BOTTOM); }}}}protected void whoIsGoing(Graphics g)//判断该谁走了{checkWin();g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE));if(isRedWin!=0){if(g2%2==1){g.setColor(255,0,0);g.drawString("该红方走了",x,x+chessR+10*cellWidth,Graphics.LEFT|Graphics.BOTTOM);}}else{ g.setColor(255,255,255);g.drawString("白方胜利",x,x+chessR+10*cellWidth,Graphics.LEFT|Graphics.BOTTOM);}if(isWhiteWin!=0){if(g2%2==0){g.setColor(255,255,255);g.drawString("该白方走了",x,x+chessR+10*cellWidth,Graphics.LEFT|Graphics.BOTTOM);}}else{ g.setColor(255,0,0);g.drawString("红方胜利",x,x+chessR+10*cellWidth,Graphics.LEFT|Graphics.BOTTOM);}}protected void checkWin()//判断输赢{ isRedWin=0;isWhiteWin=0;for(i=0;i<3;i++){for(j=0;j<3;j++){if(point[0+i][3+j]==5){isRedWin++;}}}for(i=0;i<3;i++){for(j=0;j<3;j++){if(point[7+i][3+j]==21){isWhiteWin++;}}}}protected void paintSelected(Graphics g)//画选择框{g.setColor(0,0,255);g.drawRect(x-chessR+selectedX*cellWidth,x-chessR+selectedY*cellWidth,2*chessR,2*chessR); }protected void paint(Graphics g){g.setColor(0x00000000);g.fillRect(0, 0, getWidth(), getHeight());paintMapa(g);paintMapb(g);paintMapc(g);paintAllChess(g);if(guard%2==1){chooseChess(g);}paintSelected(g);whoIsGoing(g);}protected void changTwoChessNum(int m,int n,int selectedX,int selectedY)//改变两个格子的值{g2++;p=point[selectedY][selectedX];point[selectedY][selectedX]=point[n][m];point[n][m]=0;q=word[selectedY][selectedX];word[selectedY][selectedX]=word[n][m];word[n][m]="空";}protected void theRuleOfChe(int m,int n,int selectedX,int selectedY)//车的规则{g=0;if(m==selectedX){if(n>selectedY){for(i=1;i {if(point[selectedY+i][m]!=0){g++;}}}else{for(i=1;i {if(point[n+i][m]!=0){g++;}}}if(g==0){changTwoChessNum(m,n,selectedX,selectedY);}}if(n==selectedY){if(m>selectedX){for(i=1;i {if(point[n][i+selectedX]!=0){g++;}}}else{for(i=1;i {if(point[n][m+i]!=0){g++;}}}if(g==0){changTwoChessNum(m,n,selectedX,selectedY);}}}protected void theRuleOfMa(int m,int n,int selectedX,int selectedY)//马的规则{if(n<9){if(point[n+1][m]==0){if(selectedX-m==1){if(selectedY-n==2){changTwoChessNum(m,n,selectedX,selectedY);}} }}if(n>0){if(point[n-1][m]==0){if(m-selectedX==1){if(n-selectedY==2){changTwoChessNum(m,n,selectedX,selectedY);}} }}if(n<9){if(point[n+1][m]==0){if(selectedX-m==-1){if(selectedY-n==2){changTwoChessNum(m,n,selectedX,selectedY);}} }}if(n>0){if(point[n-1][m]==0){if(m-selectedX==-1){if(n-selectedY==2){changTwoChessNum(m,n,selectedX,selectedY);}} }}if(m<8){if(point[n][m+1]==0){if(selectedX-m==2){if(selectedY-n==1){changTwoChessNum(m,n,selectedX,selectedY);}}}}if(m>0){if(point[n][m-1]==0){if(m-selectedX==2){if(n-selectedY==1){changTwoChessNum(m,n,selectedX,selectedY);}}}}if(m<8){if(point[n][m+1]==0){if(selectedimport Javax.microedition.lcdui.Display;import javax.microedition.midlet.MIDlet;public class Game extends MIDlet {GameCanvas game;//定义游戏界面的Canvas类GameCanvas的对象gobangpublic Game() {super();game=new GameCanvas(this);//生成GameCanvas类的对象game}protected void startApp(){Display.getDisplay(this).setCurrent(game);//在屏幕上绘出游戏见面game}protected void pauseApp(){}protected void destroyApp(boolean arg0){}}然后就是程序的主题部分了--GameCanvas,这里实现了从画棋盘棋子一直到判定和输出.我的主题思想是把棋盘初始化为一个2维数组,在有棋子的地方初始化为非0数,其他的都初始化为0;大家可在代码中看到,在图象输出和棋子移动也都是基于这个数组进行的。
关于棋牌游戏源代码开放在现今的棋牌游戏运营行业如火如荼的阶段,为了减少与避免一些初次接触此行业的运营商被一些产品开发商公司蒙骗上当,特此编写以下的一些说明和答疑,花点时间认真阅读和思考,可能会为您减少巨大的损失。
深圳市壹柒游网络科技有限公司为您全面解答。
1.对运营商开放源代码,可以使运营商根据运营环境与实际情况调节平台,而不被产品提供商所牵制:运营棋牌游戏,本质上做的事情就是为玩家提供最好的服务和游戏娱乐环境,玩家在这里玩开心,才会留下来,并为拉入更加多的朋友进来,从而才会使你赢取利润,是相辅相成的,是一个因果关系。
而玩家的需求日新月异,你必须根据实际的环境,调节必要的平台功能,例如注册登录策略,游戏奖励策略,游戏规则修改策略,引导购买会员策略,引导购买道具策略等等。
不同的运营时期,所进行的定制策略和程度是不一样的,所以运营商几乎每天都有修改定制部分的欲望与需求。
若运营没有得到源代码,将需要进行一系列繁琐过程:联系开发商,商讨价格,付款,等待开发,然后等待漫长的交付测试阶段。
市场机遇是不会等您的,您说这过程,使您错过了多少发展的机遇呢?从事实也得到证明,横观现今互联网的游戏运营商,从不对运营商开放源代码的棋牌站点,运营成功的又能有多少呢?答案是几乎没有。
再看使用了开放源代码的成功而且还保持不断发展的站点呢?数目是非常多的,具体的资料可以到网上搜索就能得到,这里我们就不逐一提及了。
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?2.对运营商开放源代码,不需要为二次开发承担昂贵的开发费用:拥有了产品源代码,才可以进行二次开发,才可以时刻根据市场的需求的变化而立即变化。
而对于一些不牵涉到高级技术能力的功能的修改,也需要开发商加入的话,容易造成运营策略的泄漏,被其他人捷足先登了。
而且开发商除了收取开发成本的人员费用外,还需要收取您的人员管理成本,市场拓展成本,还有公司的收入等。
而这一切的成本,若运营商有了系统源代码后,您的运营成本将会减少很多,而这些成本费用的节省,可以使您投入到市场营销方面,赢取更加多的发展机遇。
五子棋源代码-Java_Applet小程序importjava.applet.Applet; importjava.awt.*;importjava.util.Random;public class wzq extends Applet implements Runnable{public void stop(){LoopThread = null;}privateintCalcZi(inti, int j, byte byte0){CXY cxy = new CXY(); int k = 0;int l = 0;do{int i1 = 0;int j1 = 0;do{cxy.x = i;cxy.y = j;if(MoveAGrid(cxy, l + 4 * j1) &&QiPan[cxy.x][cxy.y] == byte0) do{ if(QiPan[cxy.x][cxy.y] == 0 || QiPan[cxy.x][cxy.y] != byte0) break;i1++;} while(MoveAGrid(cxy, l + 4 * j1));}while(++j1 < 2);if(i1 > k)k = i1;}while(++l < 4);return ++k;}privatebooleanCanDo(){return steps < ((GRIDSUM * GRIDSUM) / 100) * 80;}//电脑下棋privateintCPUDo(CXY cxy, byte byte0){intai[] = new int[2];int ai1[] = new int[2];int ai2[] = new int[2];boolean flag = false;EnterTimes++;ai2[0] = 0;for(inti = recLU.x; i<= recRD.x; i++){for(int k = recLU.y; k <= recRD.y; k++){int l = 0;if(QiPan[i][k] == 0){DoAStep(i, k, byte0);l = CalcCPU(i, k, byte0);}if(l > 0){int i1 = 0;byte byte1;if(byte0 == 1)byte1 = 2; elsebyte1 = 1; if(EnterTimes<= level && steps < ((GRIDSUM * GRIDSUM) / 100) * 80)i1 = CPUDo(cxy, byte1);l += i1;if(l + Math.abs(rd.nextInt()) % 5 > ai2[0] || !flag){ai[0] = i;ai1[0] = k;ai2[0] = l;flag = true;}QiPan[i][k] = 0;}}}if(EnterTimes<= 1){cxy.x = ai[0];cxy.y = ai1[0];int j = 0;do{try{Thread.sleep(300L);}catch(InterruptedException _ex) { } QiPan[cxy.x][cxy.y] = byte0;repaint();try{Thread.sleep(300L);}catch(InterruptedException _ex) { } QiPan[cxy.x][cxy.y] = 0; repaint(); }while(++j < 2);}EnterTimes--;return ai2[0];}public void ClearPan(){for(inti = 0; i< GRIDSUM; i++){for(int j = 0; j < GRIDSUM; j++) QiPan[i][j] = 0;}scHong = 0;scHei = 0;steps = 0;recLU.x = 8;recRD.x = 9;recLU.y = 8;recRD.y = 9;}privatebooleanMoveAGrid(CXY cxy, inti){boolean flag = false;i %= 8;int j = cxy.x + oAdd[i][0]; int k = cxy.y + oAdd[i][1]; if(j >= 0 && j < GRIDSUM && k >= 0 && k < GRIDSUM){cxy.x = j;cxy.y = k;flag = true;}return flag;}public void paint(Graphics g){super.paint(g);for(inti = 0; i< GRIDSUM + 1; i++){g.drawLine(0, i * GRIDWIDTH, GRIDSUM * GRIDWIDTH, i * GRIDWIDTH);g.drawLine(i * GRIDWIDTH, 0, i * GRIDWIDTH, GRIDSUM * GRIDWIDTH);}for(int j = 0; j < GRIDSUM; j++){for(int k = 0; k < GRIDSUM; k++) drawQi(g, j, k, QiPan[j][k]);}}private void CPUInit(){PosAdd[0][0] = 8;PosAdd[0][1] = -2;PosAdd[1][0] = -2;PosAdd[0][2] = 3;PosAdd[2][0] = 3;PosAdd[0][3] = 2;PosAdd[3][0] = 2; PosAdd[1][1] = -7; PosAdd[1][2] = -1; PosAdd[2][1] = -1; PosAdd[1][3] = -1; PosAdd[3][1] = -1;PosAdd[2][2] = 4; PosAdd[3][3] = 4; PosAdd[2][3] = 4; PosAdd[3][2] = 4;}public void mouseDOWNThis(Event event){if(playerdo)xiazi.put(event.x, event.y);}privateintDoAStep(inti, int j, byte byte0){if(QiPan[i][j] != 0 || byte0 == 0 || byte0 > 2){return 0;}else{QiPan[i][j] = byte0; return 1;}}private void FreshRec(inti, int j){if(i - recLU.x< 2){recLU.x = i - 2;if(recLU.x< 0)recLU.x = 0;}if(recRD.x - i< 2){recRD.x = i + 2;if(recRD.x>= GRIDSUM) recRD.x = GRIDSUM - 1; }if(j - recLU.y< 2){recLU.y = j - 2;if(recLU.y< 0)recLU.y = 0;}if(recRD.y - j < 2){recRD.y = j + 2;if(recRD.y>= GRIDSUM) recRD.y = GRIDSUM - 1;}}publicwzq(){GRIDWIDTH = 18;GRIDSUM = 18; QiPan = new byte[GRIDSUM][GRIDSUM];oAdd = new int[8][2]; playing = false;playerdo = true;xy = new CXY();xiazi = new CXiaZi(); rd = new Random(); recLU = new CXY(); recRD = new CXY(); PosAdd = new int[4][4];}public void update(Graphics g){paint(g);}//画棋public void drawQi(Graphics g, inti, int j, int k){switch(k){case 0: // '\0'g.clearRect(i * GRIDWIDTH + 1, j * GRIDWIDTH + 1, GRIDWIDTH -2,GRIDWIDTH - 2);return;case 1: // '\001'g.setColor(Color.red);g.fillArc(i * GRIDWIDTH + 2, j * GRIDWIDTH + 2, GRIDWIDTH -4,GRIDWIDTH - 4, 0, 360);return;case 2: // '\002'g.setColor(Color.black);break;}g.fillArc(i * GRIDWIDTH + 2, j * GRIDWIDTH + 2, GRIDWIDTH -4,GRIDWIDTH - 4, 0, 360);}public void start(){if(LoopThread == null)LoopThread = new Thread(this, "wbqloop"); LoopThread.setPriority(1);LoopThread.start();}public void run(){for(; Thread.currentThread() == LoopThread; xiazi.get(xy)) {ClearPan();repaint();playing = true;//谁先下随机who = (byte)(Math.abs(rd.nextInt()) % 2 + 1); for(passes = 0; playing && passes < 2;){if(who == 1){lblStatus.setText("\u7EA2\u65B9\u4E0B");lblStatus.setForeground(Color.red);}else{lblStatus.setText("\u9ED1\u65B9\u4E0B");lblStatus.setForeground(Color.black);}if(steps < ((GRIDSUM * GRIDSUM) / 100) * 80){passes = 0;if(who == 1) //人下棋{xiazi.get(xy);for(; DoAStep(xy.x, xy.y, who) == 0; xiazi.get(xy)); scHong = CalcZi(xy.x, xy.y, who); FreshRec(xy.x, xy.y); steps++;}else //机器下棋{if(scHong == 0 &&scHei == 0){ xy.x = 9;xy.y = 9;} else{ CPUDo(xy, who);} for(; DoAStep(xy.x, xy.y, who) == 0; CPUDo(xy, who)); scHei = CalcZi(xy.x, xy.y, who); FreshRec(xy.x, xy.y); steps++;}}else{passes = 2;}if(scHong>= 5 || scHei>= 5) playing = false; repaint();//交换下棋方who = (byte)((1 - (who - 1)) + 1); Thread.yield(); }if(scHong>= 5) //红方胜{Status = "\u7EA2\u65B9\u80DC!";lblStatus.setForeground(Color.red); LoseTimes++; }else if(scHei>= 5)//黑方胜{Status = "\u9ED1\u65B9\u80DC!";lblStatus.setForeground(Color.black);if(LoseTimes> 0)LoseTimes--;}else //平局{Status = "\u4E0D\u5206\u80DC\u8D1F!";}lblStatus.setText(Status); repaint();}}//入口,开始下棋,初始化public void init() {super.init(); LoopThread = null; oAdd[0][0] = 0; oAdd[0][1] = -1; oAdd[1][0] = 1; oAdd[1][1] = -1; oAdd[2][0] = 1; oAdd[2][1] = 0; oAdd[3][0] = 1; oAdd[3][1] = 1; oAdd[4][0] = 0; oAdd[4][1] = 1; oAdd[5][0] = -1; oAdd[5][1] = 1; oAdd[6][0] = -1; oAdd[6][1] = 0; oAdd[7][0] = -1; oAdd[7][1] = -1; CPUInit();setLayout(null);resize(325, 352);lblStatus = new Label("Welcome"); lblStatus.setFont(new Font("Dialog", 1, 14));add(lblStatus);lblStatus.reshape(14, 332, 175, 15);lblLevel = new Label("JAVA\u4E94\u5B50\u68CB");lblLevel.setFont(new Font("Dialog", 1, 14));add(lblLevel);lblLevel.reshape(196, 332, 119, 15);}publicbooleanhandleEvent(Event event){if(event.id != 501 || event.target != this){returnsuper.handleEvent(event);}else{mouseDOWNThis(event);return true;}}privateintCalcCPU(inti, int j, byte byte0){CXY cxy = new CXY();String s = "";String s2 = "";String s4 = ""; byte byte1 = 0;CalcTimes++;if(byte0 == 1)byte1 = 2; elseif(byte0 == 2)byte1 = 1; int k = 0;int l = 0;do{int i1 = 0;String s1 = "";String s3 = "";String s5 = ""; int j1 = 0;do{int k1 = 0;cxy.x = i;for(cxy.y = j; MoveAGrid(cxy, l + 4 * j1) && k1 < 6 &&QiPan[cxy.x][cxy.y] != byte1; k1++) if(QiPan[cxy.x][cxy.y] == byte0) {if(j1 == 0)s3 += "1"; elses5 = "1" + s5; i1++;}elseif(j1 == 0)s3 += "0"; elses5 = "0" + s5;if(j1 == 0)s3 += "2";elses5 = "2" + s5;}while(++j1 < 2);i1++;s1 = s5 + "1" + s3;if(s1.indexOf("11111") != -1)i1 += 1000;elseif(s1.indexOf("011110") != -1)i1 += 500;elseif(s1.indexOf("211110") != -1 || s1.indexOf("011112") != -1 || s1.indexOf("01110") != -1 || s1.indexOf("01110") != -1 ||s1.indexOf("011010")!= -1 || s1.indexOf("010110") != -1 || s1.indexOf("11101") != -1 || s1.indexOf("10111") != -1 ||s1.indexOf("11011") != -1)i1 += 100;elseif(s1.indexOf("21110") != -1 || s1.indexOf("01112") != -1 ||s1.indexOf("0110") != -1 || s1.indexOf("211010") != -1 ||s1.indexOf("210110")!= -1)i1 += 20;if(l == 1 || l == 3)i1 += (i1 * 20) / 100;k += i1;}while(++l < 4); if(CalcTimes<= 1)k += CalcCPU(i, j, byte1);elseif(k > 10)k -= 10; CalcTimes--;return k;}int GRIDWIDTH; //网格宽度int GRIDSUM; //网格总数byte QiPan[][]; //棋盘intoAdd[][];Thread LoopThread;intscHong; //红方intscHei; //黑方byte who; //byte winner; //赢方boolean playing; booleanplayerdo; CXY xy;CXiaZixiazi; //下子String Status; //状态Random rd; //随机数 int passes;int steps;intLoseTimes;CXY recLU;CXY recRD; intPosAdd[][]; int level; intEnterTimes; intCalcTimes;Label lblStatus;Label lblLevel; }classCXiaZi{public synchronized void get(CXY cxy) {ready = false;notify();while(!ready)try{wait();}catch(InterruptedException _ex) { }ready = false;notify();cxy.x = xy.x;cxy.y = xy.y;}public synchronized void put(inti, int j){if(i< GRIDWIDTH * GRIDSUM && j < GRIDWIDTH * GRIDSUM) {xy.x = i / GRIDWIDTH; xy.y = j / GRIDWIDTH; ready = true; notify();}}publicCXiaZi(){GRIDWIDTH = 18;GRIDSUM = 18; xy = new CXY();ready = false;}private CXY xy;privateboolean ready; privateint GRIDWIDTH; privateint GRIDSUM; } class CXY{public CXY(){x = 0;y = 0;}publicint x; publicint y; }内部资料,请勿外传~。
关于棋牌游戏源代码开放在现今的棋牌游戏运营行业如火如荼的阶段,为了减少与避免一些初次接触此行业的运营商被一些产品开发商公司蒙骗上当,特此编写以下的一些说明和答疑,花点时间认真阅读和思考,可能会为您减少巨大的损失。
深圳市壹柒游网络科技有限公司为您全面解答。
1.对运营商开放源代码,可以使运营商根据运营环境与实际情况调节平台,而不被产品提供商所牵制:运营棋牌游戏,本质上做的事情就是为玩家提供最好的服务和游戏娱乐环境,玩家在这里玩开心,才会留下来,并为拉入更加多的朋友进来,从而才会使你赢取利润,是相辅相成的,是一个因果关系。
而玩家的需求日新月异,你必须根据实际的环境,调节必要的平台功能,例如注册登录策略,游戏奖励策略,游戏规则修改策略,引导购买会员策略,引导购买道具策略等等。
不同的运营时期,所进行的定制策略和程度是不一样的,所以运营商几乎每天都有修改定制部分的欲望与需求。
若运营没有得到源代码,将需要进行一系列繁琐过程:联系开发商,商讨价格,付款,等待开发,然后等待漫长的交付测试阶段。
市场机遇是不会等您的,您说这过程,使您错过了多少发展的机遇呢?从事实也得到证明,横观现今互联网的游戏运营商,从不对运营商开放源代码的棋牌站点,运营成功的又能有多少呢?答案是几乎没有。
再看使用了开放源代码的成功而且还保持不断发展的站点呢?数目是非常多的,具体的资料可以到网上搜索就能得到,这里我们就不逐一提及了。
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?2.对运营商开放源代码,不需要为二次开发承担昂贵的开发费用:拥有了产品源代码,才可以进行二次开发,才可以时刻根据市场的需求的变化而立即变化。
而对于一些不牵涉到高级技术能力的功能的修改,也需要开发商加入的话,容易造成运营策略的泄漏,被其他人捷足先登了。
而且开发商除了收取开发成本的人员费用外,还需要收取您的人员管理成本,市场拓展成本,还有公司的收入等。
而这一切的成本,若运营商有了系统源代码后,您的运营成本将会减少很多,而这些成本费用的节省,可以使您投入到市场营销方面,赢取更加多的发展机遇。
import java.awt.*;import java.awt.event.*;import javax.swing.JOptionPane;public class Chess extends Frame{ChessPad chesspad= new ChessPad();Chess(){add(chesspad);chesspad.setBounds(70,90,440,440);Label label=new Label("click to point,doubled_click to remove,right click to back",Label.CENTER);add(label);label.setBounds(70,55,440,24);label.setBackground(Color.orange);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});setLayout(null);setVisible(true);setSize(600,550);}public static void main(String args[]){Chess chess=new Chess();}}class ChessPad extends Panel implements MouseListener, ActionListener,FocusListener {int x = -1, y = -1, chessColor = 1;String blackname="",whitename="";Button button=new Button("start");Button inputButton=new Button("input");TextField text_1=new TextField("black please"), text_2=new TextField(""),//white pleasetext_3=new TextField("black'name"),text_4=new TextField("white'name");ChessPad(){add(inputButton);inputButton.setBounds(35,5,60,26);inputButton.addActionListener(this);inputButton.addFocusListener(this);add(text_3);text_3.setBounds(115,5,90,24);text_3.addFocusListener(this);text_3.setEditable(true);add(text_4);text_4.setBounds(315,5,90,24);text_4.addFocusListener(this);text_4.setEditable(true);add(button);button.setBounds(35,36,60,26);button.setEnabled(false);button.addActionListener(this);add(text_1);text_1.setBounds(115,36,90,24);text_1.setEnabled(false);text_1.setEditable(false);add(text_2);text_2.setBounds(315,36,90,24);text_2.setEnabled(false);text_2.setEditable(false);setSize(440,440);setLayout(null);setBackground(Color.orange);addMouseListener(this);}public void paint(Graphics g){for(int i=80;i<=400;i=i+20){g.drawLine(40,i,400,i);}g.drawLine(40,420,400,420);for(int j=40;j<=380;j=j+20){g.drawLine(j,80,j,420);}g.drawLine(400,80,400,420);g.fillOval(97,137,6,6);g.fillOval(337,137,6,6);g.fillOval(97,377,6,6);g.fillOval(337,377,6,6);g.fillOval(217,257,6,6);}public void focusGained(FocusEvent e){Component com=(Component)e.getSource(); if(com==text_3){text_3.setText("");}else if(com==text_4){text_4.setText("");}}public void focusLost(FocusEvent e){}public void mousePressed(MouseEvent e)if(blackname.length()==0||whitename.length()==0){JOptionPane.showMessageDialog(this,"please input the player's name,and click input button before you start chess!","reminder",JOptionPane.WARNING_MESSAGE); }else if(blackname.equals("black'name")){JOptionPane.showMessageDialog(this,"please input the black player's name,and click input button","reminder",JOptionPane.WARNING_MESSAGE);}else if(whitename.equals("white'name")){JOptionPane.showMessageDialog(this,"please input the white player's name,and click input button","reminder",JOptionPane.WARNING_MESSAGE);}else if(e.getModifiers()==InputEvent.BUTTON1_MASK){x = (int)e.getX();y = (int)e.getY();int a=(x+10)/20,b=(y+10)/20;ChessPoint_black chesspoint_black=new ChessPoint_black(this);ChessPoint_white chesspoint_white=new ChessPoint_white(this);if(x/20<2||y/20<4||x/20>19||y/20>20){}else{if(chessColor==1){this.add(chesspoint_black);chesspoint_black.setBounds(a*20-10,b*20-10,20,20);chessColor=chessColor*(-1);text_2.setText(this.whitename+" please");text_1.setText("");else if(chessColor==-1){this.add(chesspoint_white);chesspoint_white.setBounds(a*20-10,b*20-10,20,20);chessColor=chessColor*(-1);text_1.setText(this.blackname+" please");text_2.setText("");}}}}public void mouseReleased(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mouseClicked(MouseEvent e){}public void actionPerformed(ActionEvent e){if(e.getSource()==inputButton){blackname=text_3.getText();whitename=text_4.getText();if(blackname.length()==0||whitename.length()==0){JOptionPane.showMessageDialog(this,"you did not complete theinformation!","reminder",JOptionPane.WARNING_MESSAGE);}else if(blackname.equals("black'name")){JOptionPane.showMessageDialog(this,"please input the black player's name","reminder",JOptionPane.WARNING_MESSAGE);}else if(whitename.equals("white'name")){JOptionPane.showMessageDialog(this,"please input the white player's name","reminder",JOptionPane.WARNING_MESSAGE);}else{inputButton.setEnabled(false);text_3.removeFocusListener(this);text_3.setEnabled(false);text_4.setEnabled(false);button.setEnabled(true);text_1.setEnabled(true);text_1.setText(blackname+" please");text_2.setEnabled(true);}}else if(e.getSource()==button){inputButton.setEnabled(true);text_3.setEnabled(true);text_4.setEnabled(true);button.setEnabled(false);text_1.setEnabled(false);text_2.setEnabled(false);this.removeAll();chessColor=1;add(button);button.setBounds(35,36,60,26);add(text_1);text_1.setBounds(115,36,90,24);text_1.setText("black please");add(text_2);text_2.setBounds(315,36,90,24);text_2.setText("");add(inputButton);inputButton.setBounds(35,5,60,26);add(text_3);text_3.setText("black'name");text_3.addFocusListener(this);text_3.setBounds(115,5,90,24);add(text_4);text_4.setText("white'name");text_4.setBounds(315,5,90,24);blackname="";whitename="";}}}class ChessPoint_black extends Canvas implements MouseListener {ChessPad chesspad=null;ChessPoint_black(ChessPad p){setSize(20,20);chesspad=p;addMouseListener(this);}public void paint(Graphics g){g.setColor(Color.black);g.fillOval(0,0,20,20);}public void mousePressed(MouseEvent e){if(e.getModifiers()==InputEvent.BUTTON3_MASK){chesspad.remove(this);chesspad.chessColor=1;chesspad.text_2.setText("");chesspad.text_1.setText(chesspad.blackname+" please");}}public void mouseReleased(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mouseClicked(MouseEvent e){if(e.getClickCount()>=2){chesspad.remove(this);}}}class ChessPoint_white extends Canvas implements MouseListener {ChessPad chesspad=null;ChessPoint_white(ChessPad p){setSize(20,20);chesspad=p;addMouseListener(this);}public void paint(Graphics g){g.setColor(Color.white);g.fillOval(0,0,20,20);}public void mousePressed(MouseEvent e){if(e.getModifiers()==InputEvent.BUTTON3_MASK){chesspad.remove(this);chesspad.chessColor=-1;chesspad.text_1.setText("");chesspad.text_2.setText(chesspad.whitename+" please"); }}public void mouseReleased(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mouseClicked(MouseEvent e){if(e.getClickCount()>=2){chesspad.remove(this);}}}。
#include<stdio.h>#include<math.h>int x[11][12];void main(){int i,j;int x1,y1,x2,y2,rg,gg;int rgo(int,int,int,int);int ggo(int,int,int,int);/*初始化棋子(开局)*/for(i=1;i<=5;i++){ x[i][1]=x[10-i][1]=i+10;x[i][10]=x[10-i][10]=i+20;if(i%2==1){ x[i][4]=x[10-i][4]=17;x[i][7]=x[10-i][7]=27;}}x[2][3]=x[8][3]=16;x[2][8]=x[8][8]=26;for(i=0;i<=9;i++)x[i][0]=i;for(i=1;i<=10;i++)x[0][i]=i;printf("S27\n=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n"); for(j=10;j>=0;j--){ for(i=0;i<=9;i++){if(i==0){printf("%2d |",x[i][j]);continue;}if(j==0){printf(" 0%d ",x[i][j]);continue;}switch(x[i][j]){case 0 : printf(" ");break;case 11 : printf(" 车");break;case 12 : printf(" 马");break;case 13 : printf(" 相");break;case 14 : printf(" 士");break;case 15 : printf(" 帅");break;case 16 : printf(" 炮");break;case 17 : printf(" 兵");break;case 21 : printf(" JU ");break;case 22 : printf(" MA ");break;case 23 : printf(" XN ");break;case 24 : printf(" SH ");break;case 25 : printf(" JN ");break;case 26 : printf(" PO ");break;case 27 : printf(" ZU ");break;}}if(j==1)printf("|\n---+-------------------------------------\n");else if(j==0)printf("\n");elseprintf("|\n | |\n");}/*走子*/for(;;){/*红子走子*/for(rg=0;rg==0;){for(x1=0,y1=0,x2=0,y2=0;x[x1][y1]==0||x[x1][y1]>=20||x2<1||y2<1||x2>9||y2>10||x[x2][y2] <20&&x[x2][y2]>10||x[x2][y2]==x[x1][y1];){printf("请输入红子坐标(x1,y1,x2,y2):");scanf("%d,%d,%d,%d",&x1,&y1,&x2,&y2);}if(x[x1][y1]>20){continue;}rg=rgo(x1,y1,x2,y2);if(rg==0)continue;else{if(x[x2][y2]==25){x[x2][y2]=x[x1][y1],x[x1][y1]=0;printf("lu qi shu le\n");}elsex[x2][y2]=x[x1][y1],x[x1][y1]=0;}}printf("S27 制作\n=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n"); for(j=10;j>=0;j--){for(i=0;i<=9;i++){if(i==0){printf("%2d |",x[i][j]);continue;}if(j==0){printf(" 0%d ",x[i][j]);continue;}switch(x[i][j]){case 0 : printf(" ");break;case 11 : printf(" 车");break;case 12 : printf(" 马");break;case 13 : printf(" 相");break;case 14 : printf(" 士");break;case 15 : printf(" 帅");break;case 16 : printf(" 炮");break;case 17 : printf(" 兵");break;case 21 : printf(" JU ");break;case 22 : printf(" MA ");break;case 23 : printf(" XN ");break;case 24 : printf(" SH ");break;case 25 : printf(" JN ");break;case 26 : printf(" PO ");break;case 27 : printf(" ZU ");break;}}if(j==1)printf("|\n---+-------------------------------------\n");else if(j==0)printf("\n");printf("|\n | |\n");}/*绿子走子*/for(gg=0;gg==0;){for(x1=0,y1=0,x2=0,y2=0;x[x1][y1]<10||x2<1||y2<1||x2>9||y2>10||x[x2][y2]>20||x[x2][y2]= =x[x1][y1];){printf("请输入绿子坐标(x1,y1,x2,y2):");scanf("%d,%d,%d,%d",&x1,&y1,&x2,&y2);}if(x[x1][y1]<20){continue;}gg=ggo(x1,y1,x2,y2);if(gg==0)continue;else{if(x[x2][y2]==25){x[x2][y2]=x[x1][y1],x[x1][y1]=0;printf("hong qi shu le\n");}elsex[x2][y2]=x[x1][y1],x[x1][y1]=0;}}printf("S27 制作\n=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");for(j=10;j>=0;j--){for(i=0;i<=9;i++){if(i==0){printf("%2d |",x[i][j]);continue;}if(j==0){printf(" 0%d ",x[i][j]);continue;switch(x[i][j]){case 0 : printf(" ");break;case 11 : printf(" 车");break;case 12 : printf(" 马");break;case 13 : printf(" 相");break;case 14 : printf(" 士");break;case 15 : printf(" 帅");break;case 16 : printf(" 炮");break;case 17 : printf(" 兵");break;case 21 : printf(" JU ");break;case 22 : printf(" MA ");break;case 23 : printf(" XN ");break;case 24 : printf(" SH ");break;case 25 : printf(" JN ");break;case 26 : printf(" PO ");break;case 27 : printf(" ZU ");break;}}if(j==1)printf("|\n---+-------------------------------------\n");else if(j==0)printf("\n");elseprintf("|\n | |\n"); }}}/*判定红棋是否有错*/int rgo(int xa,int ya,int xb,int yb){ if(x[xa][ya]==11) /*车*/{int t;if(xb-xa==0){if(yb<ya)t=yb,yb=ya,ya=t;for(t=1+ya;t<yb;t++)if(x[xa][t]!=0&&x[xa][t]<20)return 0;}else if(yb-ya==0){ if(xb<xa)t=xb,xb=xa,xa=t;for(t=1+xa;t<xb;t++)if(x[t][ya]!=0&&x[xa][t]<20)return 0;}else return 0;return 1;}if(x[xa][ya]==12) /*马*/ { if(fabs(yb-ya)==2&&fabs(xb-xa)==1) {if(yb-ya>0&&x[xa][ya+1]!=0)return 0;if(yb-ya<0&&x[xa][ya-1]!=0)return 0;if(x[xb][yb]!=0&&x[xb][yb]<20)return 0;}else if(fabs(xb-xa)==2&&fabs(yb-ya)==1) {if(xb-xa>0&&x[xa+1][ya]!=0)return 0;if(xb-xa<0&&x[xa-1][ya]!=0)return 0;if(x[xb][yb]!=0&&x[xb][yb]<20)return 0;}else return 0;return 1;}if(x[xa][ya]==13) /*相*/ {if(yb>5)return 0;if(fabs(yb-ya)==2&&fabs(xb-xa)==2) {if(yb-ya>0){if(xb-xa>0&&x[xa+1][ya+1]!=0)return 0;else if(xb-xa<0&&x[xa-1][ya+1]!=0)return 0;}else{if(xb-xa>0&&x[xa+1][ya-1]!=0)return 0;else if(xb-xa<0&&x[xa-1][ya-1]!=0)return 0;}if(x[xb][yb]!=0&&x[xb][yb]<20)return 0;}else return 0;return 1;}if(x[xa][ya]==14) /*士*/{if(xb<4||xb>6||yb>3)return 0;if(x[xb][yb]!=0&&x[xb][yb]<20)return 0;if(fabs(yb-ya)==fabs(xb-xa)==1)return 1;else return 0;}if(x[xa][ya]==15) /*帅*/{if(xb<4||xb>6||yb>3)return 0;if((fabs(yb-ya)==1&&xb-xa==0)||(fabs(xb-xa)==1&&yb-ya==0)) return 1;else return 0;}if(x[xa][ya]==16) /*炮*/{int t,k;if(yb-ya==0){if(xb<xa)t=xb,xb=xa,xa=t;for(t=0,k=1;xb>xa+k;k++)if(x[xa+k][ya]!=0)t++;if(t>1)return 0;else if(t==0){if(x[xb][yb]==0||x[xa][ya]==0)return 1;else return 0;}else if(t==1){if(x[xb][yb]>20)return 1;else return 0;}}else if(xb-xa==0){if(yb<ya)t=yb,yb=ya,ya=t;for(t=0,k=1;yb>ya+k;k++)if(x[xa][ya+k]!=0)t++;if(t>1)return 0;else if(t==0){if(x[xb][yb]==0||x[xa][ya]==0)return 1;else return 0;}else if(t==1){if(x[xb][yb]>20)return 1;else return 0;}}else return 0;}if(x[xa][ya]==17) /*兵*/{if(yb==ya&&fabs(xb-xa)==1||yb-ya==1&&xb==xa) {if((ya==4||ya==5)&&xb!=xa)return 0;if(x[xb][yb]!=0&&x[xb][yb]<20)return 0;}else return 0;}}/*判定绿棋是否有错*/int ggo(int xa,int ya,int xb,int yb){if(x[xa][ya]==21) /*车*/ {int t;if(xb-xa==0){if(yb<ya)t=yb,yb=ya,ya=t;for(t=1+ya;t<yb;t++)if(x[xa][t]!=0&&x[xa][t]>20)return 0;}else if(yb-ya==0){if(xb<xa)t=xb,xb=xa,xa=t;for(t=1+xa;t<xb;t++)if(x[t][ya]!=0&&x[t][ya]>20)return 0;}else return 0;return 1;}if(x[xa][ya]==22) /*马*/ {if(fabs(yb-ya)==2&&fabs(xb-xa)==1) {if(yb-ya>0&&x[xa][ya+1]!=0)return 0;if(yb-ya<0&&x[xa][ya-1]!=0)return 0;if(x[xb][yb]!=0&&x[xb][yb]>20)return 0;}else if(fabs(xb-xa)==2&&fabs(yb-ya)==1) {if(xb-xa>0&&x[xa+1][ya]!=0)return 0;if(xb-xa<0&&x[xa-1][ya]!=0)if(x[xb][yb]!=0&&x[xb][yb]>20)return 0;}else return 0;return 1;}if(x[xa][ya]==23) /*相*/ {if(yb<6)return 0;if(fabs(yb-ya)==2&&fabs(xb-xa)==2) {if(yb-ya>0){if(xb-xa>0&&x[xa+1][ya+1]!=0)return 0;else if(xb-xa<0&&x[xa-1][ya+1]!=0)return 0;}else{if(xb-xa>0&&x[xa+1][ya-1]!=0)return 0;else if(xb-xa<0&&x[xa-1][ya-1]!=0)return 0;}if(x[xb][yb]!=0&&x[xb][yb]>20)return 0;}else return 0;return 1;}if(x[xa][ya]==24) /*士*/ {if(xb<4||xb>6||yb<8)return 0;if(x[xb][yb]!=0&&x[xb][yb]>20)return 0;if(fabs(yb-ya)==fabs(xb-xa)==1) return 1;else return 0;}if(x[xa][ya]==25) /*帅*/ {return 0;if((fabs(yb-ya)==1&&xb-xa==0)||(fabs(xb-xa)==1&&yb-ya==0)) return 1;else return 0;}if(x[xa][ya]==26) /*炮*/{ int t,k;if(yb-ya==0){ if(xb<xa)t=xb,xb=xa,xa=t;for(t=0,k=1;xb>xa+k;k++)if(x[xa+k][ya]!=0)t++;if(t>1)return 0;else if(t==0){ if(x[xb][yb]==0||x[xa][ya]==0)return 1;else return 0;}else if(t==1){ if(x[xb][yb]<20)return 1;else return 0;}}else if(xb-xa==0){if(yb<ya)t=yb,yb=ya,ya=t;for(t=0,k=1;yb>ya+k;k++)if(x[xa][ya+k]!=0)t++;if(t>1)return 0;else if(t==0){if(x[xb][yb]==0||x[xa][ya]==0)return 1;else return 0;}else if(t==1){return 1;else return 0;}}else return 0;}if(x[xa][ya]==27) /*兵*/{if(yb==ya&&fabs(xb-xa)==1||ya-yb==1&&xb==xa) {if((ya==6||ya==7)&&xb!=xa)return 0;if(x[xb][yb]!=0&&x[xb][yb]>20)return 0;}else return 0;return 1;}}。
关于棋牌游戏源代码开放
在现今的棋牌游戏运营行业如火如荼的阶段,为了减少与避免一些初次接触此行业的运营商被一些产品开发商公司蒙骗上当,特此编写以下的一些说明和答疑,花点时间认真阅读和思考,可能会为您减少巨大的损失。
深圳市壹柒游网络科技有限公司为您全面解答。
1.对运营商开放源代码,可以使运营商根据运营环境与实际情况调节平台,而不被产品提供商所牵制:
运营棋牌游戏,本质上做的事情就是为玩家提供最好的服务和游戏娱乐环境,玩家在这里玩开心,才会留下来,并为拉入更加多的朋友进来,从而才会使你赢取利润,是相辅相成的,是一个因果关系。
而玩家的需求日新月异,你必须根据实际的环境,调节必要的平台功能,例如注册登录策略,游戏奖励策略,游戏规则修改策略,引导购买会员策略,引导购买道具策略等等。
不同的运营时期,所进行的定制策略和程度是不一样的,所以运营商几乎每天都有修改定制部分的欲望与需求。
若运营没有得到源代码,将需要进行一系列繁琐过程:联系开发商,商讨价格,付款,等待开发,然后等待漫长的交付测试阶段。
市场机遇是不会等您的,您说这过程,使您错过了多少发展的机遇呢?
从事实也得到证明,横观现今互联网的游戏运营商,从不对运营商开放源代码的棋牌站点,运营成功的又能有多少呢?
答案是几乎没有。
再看使用了开放源代码的成功而且还保持不断发展的站点呢?数目是非常多的,具体的资料可以到网上搜索就能得到,这里我们就不逐一提及了。
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?
2.对运营商开放源代码,不需要为二次开发承担昂贵的开发费用:
拥有了产品源代码,才可以进行二次开发,才可以时刻根据市场的需求的变化而立即变化。
而对于一些不牵涉到高级技术能力的功能的修改,也需要开发商加入的话,容易造成运营策略的泄漏,被其他人捷足先登了。
而且开发商除了收取开发成本的人员费用外,还需要收取您的人员管理成本,市场拓展成本,还有公司的收入等。
而这一切的成本,若运营商有了系统源代码后,您的运营成本将会减少很多,而这些成本费用的节省,可以使您投入到市场营销方面,赢取更加多的发展机遇。
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?
3.对运营商开放源代码,可以使游戏系统更加健壮:
俗语说,一人智短,二人智长。
那么更加多的人呢?是不是应该更加更加智长呢?答案当然是肯定的。
开放源代码的系统,经历着这么多的运营商的实际运营考验,实际进行的功能增加和功能修改,并被众多的技术人员的查阅和审核,您说,这样的系统是不是比不开放源代码的系统更加健壮和问题,漏洞问题是否更加容易发现和及时修补。
而对于不开放源代码的产品商,他们是没有精力顾及到那么多的运营商,也没有这样的人力投入进行到错误的检测和修正方面。
所以,他们的系统只是把错误隐藏起来,使您无法察觉而已,而到了错误产生的时候,您的损失就无法避免了。
让我们一起开一个实际的例子吧,微软的Windows系统与开源的Linux系统,那个更加稳定,那个更加健壮?Linux经历这众多的开发人员共同研究,共同除错,是一个非常稳定的系统。
现今网络上,几乎一切超大型的门户网站,新闻网站,社区网站做服务器系统的,几乎都是清一色的开源Linux服务器系统,谁会用Windows系统的呢?
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?
4.对运营商开放源代码,可以使游戏运营商更加迅速适应市场的变化:
玩家的需求日新月异,你必须根据实际的环境,调节必要的平台功能,例如注册登录策略,游戏奖励策略,游戏规则修改策略,引导购买会员策略,引导购买道具策略等等。
不同的运营时期,所进行的定制策略和程度是不一样的,所以运营商几乎每天都有修改定制部分的欲望与需求。
若运营没有得到源代码,将需要进行一系列繁琐过程:联系开发商,商讨价格,付款,等待开发,然后等待漫长的交付测试阶段。
市场机遇是不会等您的,您说这过程,使您错过了多少发展的机遇呢?
5.对运营商开放源代码,可以使运营商更加放心,避免被开发商植入后门程序的顾虑:
开发源代码,可以用代码事实证明,系统是没有植入后门程序的。
若没有提供源代码,您又怎么知道和证明开发商没有植入后门程序呢?您就真的完全放心地用这样的产品去发展吗?就不怕等您发展到一定的阶段的时候,被别人利用后门进入您的系统进行破坏吗?您的一切不就被后门程序说要挟和控制了吗安全又从而而来呢
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?
6.对运营商开放源代码,可以使运营商的平台更加容易成功,更加具有价值:
棋牌系统运营的某个程度,必定会吸引某些投资商,收购商的兴趣,会提出对您的网站进行投资或者收购。
而若您的运营系统是没有代码的,您觉得投资商与收购商还会那么傻给您进行投资与收购吗?是绝对不会的,因为没有源代码,无论如何成功,都只是个空壳,没有一点实际价值和意义,运营商只能谋求在游戏运作阶段每月的玩家消费收入。
您说,怎么样的系统您的发展是否更加有利呢?更加容易成功呢?
一些疑问回答:
1.开放源代码的系统,数据是如何保证安全的呢?
一套棋牌游戏系统,是由服务器与客户端组合而成的。
服务器,是运作在您具有完全控制权的机器里,一切的修改,更新,维护,替换工作都是在您的知情,可控的范围内进行的。
客户端,是供玩家下载的,运行在玩家的电脑里。
有些运营上会有这样的疑问,游戏代码都开放了,那玩家不就更加容易编写木马和外挂程序了吗?其实这个是个极端除错误的认识,其实开放代码的系统,更加不容易出现木马和外挂程序,请接着看以下的一些分析和概念说明。
在游戏系统中,游戏客户端承担的角色只是负责玩家的输入与服务器的数据的显示,还有一些辅助逻辑功能的预先计算功能。
例如服务器告诉客户端,某某玩家干了些什么事情,客户端就简单的用友好的视觉界面表现给玩家而已。
又例如玩家要出某个牌,就发个消息通知服务器,我要出什么什么牌了,请代我告诉其他人,客户端是以这样的一个模式运作的。
我们不要忘记了,这一切的可执行的行为的合法性,正确性,都是由服务器效验和执行,而不是客户端说干嘛就能干嘛的。
开放源代码的程序,可以供运营商检测系统到底是否这样做了,服务器有没有做验证(备注:某些不开发代码的系统,为了编码的简单和减少开发时间和工作量,是不会在服务器严格的验证,导致的后果就是客户端要干什么就什么,导致服务器的数据混乱,系统不稳定)
而在整个游戏系统中,服务器程序的修改与替换,都是由您的控制而完成的,所以,只要保证了服务器环境的安全,就等于保证了整个游戏系统的安全,保证不会被玩家加入木马程序与外挂程序了。
2.既然这样,那些不提供代码的开发商为什么就不能提供源代码呢?
有几个原因的,导致他们不提供源代码:
a)系统源代码的撷取有非法性,非本公司的技术开发成果产品,是从某些不见得人的渠道获得的。
若提供源代码的话,将
会被被法律控告,遭受巨额赔款,而不提供源代码,将使控告流程无法取证,也就无法被控告了,也就没有巨额赔款了。
b)为了控制运营商,使运营上的发展与自己紧密绑定在一起,为自己日后的发展做铺垫。
c)为了获取运营商更多的利润,若是一个有了1000人的游戏平台,运营商没有代码只能给开发商来开发,那岂不是任由
开发商宰割?都有可以直接吞并的可能性存在!
d)代码具有严重的安全性,若公开的了源代码,将会被众多的技术开发人员阅读,导致爆发出系统漏洞无法修复,影响巨
大。
请各位运营商醒醒吧,因为以上的这些原因,他们是不会为您提供源代码的,就算您愿意付出昂贵的报酬代价,也是不可以的,因为涉及到的是他的命脉哦,他们知道了若提供了源代码后,等于自取灭亡,遭受巨额赔款,您觉得他们会为您提供源代码吗?。