
贪吃蛇大作战如何组成cp
除非那个人喜欢你,你也喜欢他,这种关系叫cp(一般都是这样)
贪吃蛇大作战双方守护值都要999才能组cp吗
很多心里想很多个时候他需要900句话这个事现在还不多的话,你可以去买的,我想购买的话,你可以用990块钱买的。
贪吃蛇怎么用C语言编写
#include kbhit)*\\\/ \\\/*用黑色去除蛇的的最后一节*\\\/ if(snake.life==1)\\\/*如果蛇死就跳出循环*\\\/ break; key=bioskey(0);\\\/*接收按键*\\\/ if(key==ESC)\\\/*按ESC键退出*\\\/ break; else if(key==UP&&snake.direction!=4) \\\/*判断是否往相反的方向移动*\\\/ snake.direction=3; else if(key==RIGHT&&snake.direction!=2) snake.direction=1; else if(key==LEFT&&snake.direction!=1) snake.direction=2; else if(key==DOWN&&snake.direction!=3) snake.direction=4; }\\\/*endwhile(1)*\\\/ } \\\/*游戏结束*\\\/ void GameOver(void) { cleardevice(); \\\/*清屏*\\\/PrScore(); setcolor(RED); \\\/*设置字体颜色*\\\/settextstyle(0,0,4); \\\/*设置字体类型*\\\/outtextxy(200,200,GAME OVER); \\\/*显示文本*\\\/getch(); } \\\/*输出成绩及游戏等级*\\\/ void PrScore(void) { char str1[20];\\\/*设置字符型数组*\\\/ setfillstyle(SOLID_FILL,0); bar(50,15,390,35); \\\/*填充矩形框*\\\/setcolor(6); \\\/*设置文本颜色*\\\/settextstyle(0,0,2); \\\/*设置数组显示位置*\\\/sprintf(str1,score %d level %d,score,level);\\\/*显示数组内容*\\\/outtextxy(55,20,str1); setcolor(YELLOW); \\\/*设置字体颜色*\\\/settextstyle(0,0,2); \\\/*设置字体类型*\\\/outtextxy(250,400,EXIT=ESC );\\\/*显示文本*\\\/} void Close(void) { closegraph(); } 要不然这个你只需要在设置关系里面就可以找到组cp了,希望帮到你真是可以的。 用MVC方式实现的贪吃蛇游戏,共有4个类。 运行GreedSnake运行即可。 主要是观察者模式的使用,我已经添加了很多注释了。 1、\\\/* * 程序名称:贪食蛇 * 原作者:BigF * 修改者:algo * 说明:我以前也用C写过这个程序,现在看到BigF用Java写的这个,发现虽然作者自称是Java的初学者, * 但是明显编写程序的素养不错,程序结构写得很清晰,有些细微得地方也写得很简洁,一时兴起之 * 下,我认真解读了这个程序,发现数据和表现分开得很好,而我近日正在学习MVC设计模式, * 因此尝试把程序得结构改了一下,用MVC模式来实现,对源程序得改动不多。 * 我同时也为程序增加了一些自己理解得注释,希望对大家阅读有帮助。 *\\\/package mvcTest;\\\/** * @author WangYu * @version 1.0 * Description: * <\\\/pre> * Create on :Date :2005-6-13 Time:15:57:16 * LastModified: * History: *\\\/public class GreedSnake { public static void main(String[] args) { SnakeModel model = new SnakeModel(20,30); SnakeControl control = new SnakeControl(model); SnakeView view = new SnakeView(model,control); \\\/\\\/添加一个观察者,让view成为model的观察者 model.addObserver(view); (new Thread(model)).start(); }} -------------------------------------------------------------2、package mvcTest;\\\/\\\/SnakeControl.javaimport java.awt.event.KeyEvent;import java.awt.event.KeyListener;\\\/** * MVC中的Controler,负责接收用户的操作,并把用户操作通知Model *\\\/public class SnakeControl implements KeyListener{ SnakeModel model; public SnakeControl(SnakeModel model){ this.model = model; } public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode(); if (model.running){ \\\/\\\/ 运行状态下,处理的按键 switch (keyCode) { case KeyEvent.VK_UP: model.changeDirection(SnakeModel.UP); break; case KeyEvent.VK_DOWN: model.changeDirection(SnakeModel.DOWN); break; case KeyEvent.VK_LEFT: model.changeDirection(SnakeModel.LEFT); break; case KeyEvent.VK_RIGHT: model.changeDirection(SnakeModel.RIGHT); break; case KeyEvent.VK_ADD: case KeyEvent.VK_PAGE_UP: model.speedUp(); break; case KeyEvent.VK_SUBTRACT: case KeyEvent.VK_PAGE_DOWN: model.speedDown(); break; case KeyEvent.VK_SPACE: case KeyEvent.VK_P: model.changePauseState(); break; default: } } \\\/\\\/ 任何情况下处理的按键,按键导致重新启动游戏 if (keyCode == KeyEvent.VK_R || keyCode == KeyEvent.VK_S || keyCode == KeyEvent.VK_ENTER) { model.reset(); } } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { }}-------------------------------------------------------------3、\\\/* * *\\\/package mvcTest;\\\/** * 游戏的Model类,负责所有游戏相关数据及运行 * @author WangYu * @version 1.0 * Description: * <\\\/pre> * Create on :Date :2005-6-13 Time:15:58:33 * LastModified: * History: *\\\/\\\/\\\/SnakeModel.javaimport javax.swing.*;import java.util.Arrays;import java.util.LinkedList;import java.util.Observable;import java.util.Random;\\\/** * 游戏的Model类,负责所有游戏相关数据及运行 *\\\/class SnakeModel extends Observable implements Runnable { boolean[][] matrix; \\\/\\\/ 指示位置上有没蛇体或食物 LinkedList nodeArray = new LinkedList(); \\\/\\\/ 蛇体 Node food; int maxX; int maxY; int direction = 2; \\\/\\\/ 蛇运行的方向 boolean running = false; \\\/\\\/ 运行状态 int timeInterval = 200; \\\/\\\/ 时间间隔,毫秒 double speedChangeRate = 0.75; \\\/\\\/ 每次得速度变化率 boolean paused = false; \\\/\\\/ 暂停标志 int score = 0; \\\/\\\/ 得分 int countMove = 0; \\\/\\\/ 吃到食物前移动的次数 \\\/\\\/ UP and DOWN should be even \\\/\\\/ RIGHT and LEFT should be odd public static final int UP = 2; public static final int DOWN = 4; public static final int LEFT = 1; public static final int RIGHT = 3; public SnakeModel( int maxX, int maxY) { this.maxX = maxX; this.maxY = maxY; reset(); } public void reset(){ direction = SnakeModel.UP; \\\/\\\/ 蛇运行的方向 timeInterval = 200; \\\/\\\/ 时间间隔,毫秒 paused = false; \\\/\\\/ 暂停标志 score = 0; \\\/\\\/ 得分 countMove = 0; \\\/\\\/ 吃到食物前移动的次数 \\\/\\\/ initial matirx, 全部清0 matrix = new boolean[maxX][]; for (int i = 0; i < maxX; ++i) { matrix[i] = new boolean[maxY]; Arrays.fill(matrix[i], false); } \\\/\\\/ initial the snake \\\/\\\/ 初始化蛇体,如果横向位置超过20个,长度为10,否则为横向位置的一半 int initArrayLength = maxX > 20 ? 10 : maxX \\\/ 2; nodeArray.clear(); for (int i = 0; i < initArrayLength; ++i) { int x = maxX \\\/ 2 + i;\\\/\\\/maxX被初始化为20 int y = maxY \\\/ 2; \\\/\\\/maxY被初始化为30 \\\/\\\/nodeArray[x,y]: [10,15]-[11,15]-[12,15]~~[20,15] \\\/\\\/默认的运行方向向上,所以游戏一开始nodeArray就变为: \\\/\\\/ [10,14]-[10,15]-[11,15]-[12,15]~~[19,15] nodeArray.addLast(new Node(x, y)); matrix[x][y] = true; } \\\/\\\/ 创建食物 food = createFood(); matrix[food.x][food.y] = true; } public void changeDirection(int newDirection) { \\\/\\\/ 改变的方向不能与原来方向同向或反向 if (direction % 2 != newDirection % 2) { direction = newDirection; } } \\\/** * 运行一次 * @return *\\\/ public boolean moveOn() { Node n = (Node) nodeArray.getFirst(); int x = n.x; int y = n.y; \\\/\\\/ 根据方向增减坐标值 switch (direction) { case UP: y--; break; case DOWN: y++; break; case LEFT: x--; break; case RIGHT: x++; break; } \\\/\\\/ 如果新坐标落在有效范围内,则进行处理 if ((0 <= x && x < maxX) && (0 <= y && y < maxY)) { if (matrix[x][y]) { \\\/\\\/ 如果新坐标的点上有东西(蛇体或者食物) if (x == food.x && y == food.y) { \\\/\\\/ 吃到食物,成功 nodeArray.addFirst(food); \\\/\\\/ 从蛇头赠长 \\\/\\\/ 分数规则,与移动改变方向的次数和速度两个元素有关 int scoreGet = (10000 - 200 * countMove) \\\/ timeInterval; score += scoreGet > 0 ? scoreGet : 10; countMove = 0; food = createFood(); \\\/\\\/ 创建新的食物 matrix[food.x][food.y] = true; \\\/\\\/ 设置食物所在位置 return true; } else \\\/\\\/ 吃到蛇体自身,失败 return false; } else { \\\/\\\/ 如果新坐标的点上没有东西(蛇体),移动蛇体 nodeArray.addFirst(new Node(x, y)); matrix[x][y] = true; n = (Node) nodeArray.removeLast(); matrix[n.x][n.y] = false; countMove++; return true; } } return false; \\\/\\\/ 触到边线,失败 } public void run() { running = true; while (running) { try { Thread.sleep(timeInterval); } catch (Exception e) { break; } if (!paused) { if (moveOn()) { setChanged(); \\\/\\\/ Model通知View数据已经更新 notifyObservers(); } else { JOptionPane.showMessageDialog(null, you failed, Game Over, JOptionPane.INFORMATION_MESSAGE); break; } } } running = false; } private Node createFood() { int x = 0; int y = 0; \\\/\\\/ 随机获取一个有效区域内的与蛇体和食物不重叠的位置 do { Random r = new Random(); x = r.nextInt(maxX); y = r.nextInt(maxY); } while (matrix[x][y]); return new Node(x, y); } public void speedUp() { timeInterval *= speedChangeRate; } public void speedDown() { timeInterval \\\/= speedChangeRate; } public void changePauseState() { paused = !paused; } public String toString() { String result = ; for (int i = 0; i < nodeArray.size(); ++i) { Node n = (Node) nodeArray.get(i); result += [ + n.x + , + n.y + ]; } return result; }}class Node { int x; int y; Node(int x, int y) { this.x = x; this.y = y; }} ------------------------------------------------------------4、package mvcTest;\\\/\\\/SnakeView.javaimport javax.swing.*;import java.awt.*;import java.util.Iterator;import java.util.LinkedList;import java.util.Observable;import java.util.Observer;\\\/** * MVC模式中得Viewer,只负责对数据的显示,而不用理会游戏的控制逻辑 *\\\/public class SnakeView implements Observer { SnakeControl control = null; SnakeModel model = null; JFrame mainFrame; Canvas paintCanvas; JLabel labelScore; public static final int canvasWidth = 200; public static final int canvasHeight = 300; public static final int nodeWidth = 10; public static final int nodeHeight = 10; public SnakeView(SnakeModel model, SnakeControl control) { this.model = model; this.control = control; mainFrame = new JFrame(GreedSnake); Container cp = mainFrame.getContentPane(); \\\/\\\/ 创建顶部的分数显示 labelScore = new JLabel(Score:); cp.add(labelScore, BorderLayout.NORTH); \\\/\\\/ 创建中间的游戏显示区域 paintCanvas = new Canvas(); paintCanvas.setSize(canvasWidth + 1, canvasHeight + 1); paintCanvas.addKeyListener(control); cp.add(paintCanvas, BorderLayout.CENTER); \\\/\\\/ 创建底下的帮助栏 JPanel panelButtom = new JPanel(); panelButtom.setLayout(new BorderLayout()); JLabel labelHelp; labelHelp = new JLabel(PageUp, PageDown for speed;, JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.NORTH); labelHelp = new JLabel(ENTER or R or S for start;, JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.CENTER); labelHelp = new JLabel(SPACE or P for pause, JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.SOUTH); cp.add(panelButtom, BorderLayout.SOUTH); mainFrame.addKeyListener(control); mainFrame.pack(); mainFrame.setResizable(false); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setVisible(true); } void repaint() { Graphics g = paintCanvas.getGraphics(); \\\/\\\/draw background g.setColor(Color.WHITE); g.fillRect(0, 0, canvasWidth, canvasHeight); \\\/\\\/ draw the snake g.setColor(Color.BLACK); LinkedList na = model.nodeArray; Iterator it = na.iterator(); while (it.hasNext()) { Node n = (Node) it.next(); drawNode(g, n); } \\\/\\\/ draw the food g.setColor(Color.RED); Node n = model.food; drawNode(g, n); updateScore(); } private void drawNode(Graphics g, Node n) { g.fillRect(n.x * nodeWidth, n.y * nodeHeight, nodeWidth - 1, nodeHeight - 1); } public void updateScore() { String s = Score: + model.score; labelScore.setText(s); } public void update(Observable o, Object arg) { repaint(); }} 加好友,然后自由模式或者团战模式里点击邀请你那个好友玩游戏就到51wan(∗ᵒ̶̶̷̀ω˂̶́∗)੭₎₎̊₊♡ 给你个思路 蛇:有多节组成,可增可减;所以 每节 当作一个对象来处理。 例:创建一个 身体节的一个类(Snake)。 里面加些属性 需要什么属性自己随便。 基本的 X、Y。 还可做美术做一个蛇的单节身体的图片。 假设蛇初始有5节。 初始蛇头定好坐标。 然后for( var i:int = 0; i < 5; i++ ){ var vSnake:Snake = new Snake(\\\/** 构造函数里可以设置坐标或者另赋值*\\\/); vSnake.x = xxxxxxx; vSnake.y = xxxxxxx; \\\/\\\/\\\/自己定 array.push( vSnake ); \\\/\\\/\\\/都放到一个数组里控制 this.addChild( vSnake );}上面代码已经画出一个蛇的形状了。 然后在蛇移动中控制数组里的对象就可以了。 如:例如别人控制蛇向左移动for( var i:int = array.length - 1; i >= 0; i-- ){ \\\/\\\/\\\/这里要倒叙 从蛇尾开始移动 if( i == 0 ){ \\\/\\\/\\\/蛇头 switch(控制蛇移动的方向){ case 上: array[i].x = \\\/** 不变 *\\\/; array[i].y = \\\/** 加一次位移 *\\\/; break; case 下: \\\/** 同“上”计算位移*\\\/ break; case 左: \\\/** 同“上”计算位移*\\\/ break; case 右: \\\/** 同“上”计算位移*\\\/ break; } }else{ \\\/\\\/\\\/从最后开始,每一节挪到前一节位置 array[i].x = array[i - 1].x; array[i].y = array[i - 1].y; }}最后你的蛇每走一步都 用你蛇头的对象.hitTestObject(对象) 遍历一遍,看有没有碰到自己身体或者 障碍物 或者墙壁之类的。 碰到就游戏结束蛇在行进中如果吃到加长道具就把数组追加一个对象 array.push( 对象 );碰到缩短 就删除尾部一个对象,array.pop().具体删除几个,看你设计缩多短了这样一个基本的贪吃蛇游戏就形成了。 具体再添加什么好玩的元素就看自己怎么做了。贪吃蛇大作战如何组cp
java 贪吃蛇 给我详细注解 高分
贪吃蛇大作战怎么和好友一起玩 好友组队方法
贪吃蛇中方向控制的代码 求指教



