贪吃蛇代码java相关知识
-
贪吃蛇的使命之零基础入门贪吃蛇游戏(附演示地址)零基础入门贪吃蛇游戏 贪吃蛇是一款最常见、最经典、最受欢迎的小游戏之一。本篇文章带你零基础实现贪吃蛇游戏,一条蛇的使命从这里开始。 演示地址:贪吃蛇演示,可能会提示危险操作,请忽略,放心访问。 1、游戏描述 贪吃蛇是一款非常经典的休闲类游戏。在一块固定大小的区域内,游戏玩家通过控制贪吃蛇的移动去吃食物,吃到食物的蛇身体变长。食物被蛇吃到后立马消失,并再次随机产生。蛇撞到四周墙壁或者自己身体时死亡。 2、前期准备 2.1 具备技能 本游戏所说是零基础,但
-
贪吃蛇源代码<html><head><meta charset="UTF-8"/><title>贪吃蛇</title></head><body> <canvas id="canvas" width="1000" height="700"></canvas> <div> <input id="switch" type="button" value="开始" ="clickSwitch()"></input><br/> &
-
H5小游戏——贪吃蛇GreedySnake额。。先说几句前阵子导师大大让我做点小项目练练手,于是就用业余时间做了个H5小游戏——贪吃蛇。。。过程中参考了凹凸实验室(划重点,里面讲解的很到位)以及谷歌上大大小小的贪吃蛇项目,最后做出了这个简化到不能再简化的贪吃蛇。。。新手新手。。大家多多见谅先上个Demo吧,大家可以玩一下,只有最基本的功能:吃食物,然后会变长,每吃一个食物加一分,撞到自己或者撞到墙的话游戏结束。照理来说应该会越长速度越快,或者倒计时内计算得分,日后会继续完善!下面是该小游戏的二维码源码在此~~真的是比较粗糙。。还在完善和添加注释的过程中。。都不好意思叫你们star一个了哈哈哈哈https://github.com/easonhuang123/greedysnake实现思路这个项目使用了最基本的MVC设计模型,所以笔者分别从model,view,control三个层面进行分析~Model模型层负责管理项目中的各种数据结构,包括蛇,食物,墙和整个活动区域。蛇snake看到界面中那条长长的蛇之后可能凭借着直观感受你第一时间就会想到用一个数
-
jQuery写个贪吃蛇都说码农都该有自己的博客,我也整个,这是第一次发。自学JS/JQ半年多,半年前要是听说谁会用JS/JQ做个贪吃蛇我都会觉得他是大神,现在觉得,也就那样了。最近没项目做,正好想到贪吃蛇我现在应该能做出来了。说干就干,先不看别人的代码,自己搞,半天的时间搞定了。偷个懒用JQ写的,也不知道有没有啥问题。 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript" src=
贪吃蛇代码java相关课程
贪吃蛇代码java相关教程
- 4.JAVA 代码实现 在说明求解钢条切割问题的整个过程之后,接下来,我们看看如何用 java 代码实现钢条切割问题的求解。import java.util.ArrayList;import java.util.List;public class ActivitySelect { public static void main(String args[]){ //活动集合a int a[] = {1,2,3,4,5,6,7,8,9,10,11}; //活动开始时间集合s int s[] ={1,3,0,5,3,5,6,8,8,2,12}; //活动结束集合f int f[] ={4,5,6,7,9,9,10,11,12,14,16}; //活动选择存放集合A List<Integer> A = new ArrayList<>(); int n = s.length; A.add(a[0]); int k =0; //遍历选择活动 for (int i=1; i<n; i++){ if(s[i] >= f[k]){ A.add(a[i]); k = i; } } System.out.println("活动选择问题的选择活动结果为:"); System.out.println(A); }}运行结果如下:活动选择问题的选择活动结果为:[1, 4, 8, 11]代码中第 7 行至第 14 行分别初始化活动和对应的开始时间、结束时间以及活动选择过程中存放选择的活动集合,代码的第 16 至 18 行对应着开始的活动选择初始化工作,因为 java 数组的下标从 0 开始,所以这里面我们第一个选择的活动为 a [0],而不是伪代码中的 a [1]。代码的第 20 行至 26 行 for 循环遍历活动选择,按照贪心选择的方法选择对应的活动,放入最终的结果集 A 中 ,代码的 28 行 29 行输出相关的活动选择结果。
- 3.3 迭代贪心算法 按照上面分析的最优子结构和贪心选择方法,我们可以用迭代的方法去求解活动选择问题,相关伪代码如下:GreedyActivitySelect(a,s,f): //定义活动总数 n = s.length //按照贪心策略,首先选中第一个结束的活动 A = {a[i]} //记录当前选中的活动 k = 1 //for循环遍历,按照贪心策略选择活动 for i=2 to n{ if s[i] >= f[k]{ A = A.add(a[i]) k = i } }其中,算法的输入是活动选择集合 a,活动选择问题的开始时间 s 和结束时间 f ,并且已经按照结束时间依次递增的顺序排序好。算法会将选择的活动存入集合 A,最后返回集合 A 作为最终选择的活动集合。
- 4.JAVA 代码实现 在说明求解背包问题的整个过程之后,接下来,我们看看如何用 java 代码实现背包问题的求解。import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Knapsack { /** * 物品内部类 */ private static class Item implements Comparable<Item>{ int type; double weight; double value; double unitValue; public Item(int type, double weight){ this.type = type; this.weight = weight; } public Item(int type, double weight,double value){ this.type = type; this.weight = weight; this.value = value; this.unitValue = value/weight; } @Override public int compareTo(Item o) { return Double.valueOf(o.unitValue).compareTo(this.unitValue); } } public static void main(String[] args){ //背包容量 double capacity = 30; //物品类型初始化数组 int[] itemType = {1,2,3,4,5}; //物品重量初始化数组 double[] itemWeight = {10,5,15,10,30}; //物品价值初始化数组 double[] itemValue = {20,30,15,25,10}; //初始化物品 List<Item> itemList = new ArrayList<>(); for(int i=0;i<itemType.length;i++){ Item item = new Item(itemType[i],itemWeight[i],itemValue[i]); itemList.add(item); } //物品按照单价降序排序 Collections.sort(itemList); //背包选择 List<Item> selectItemList = new ArrayList<>(); double selectCapacity = 0; for(Item item : itemList){ if( (selectCapacity + item.weight) <= capacity){ selectCapacity = selectCapacity + item.weight; Item selectItem = new Item(item.type,item.weight); selectItemList.add(selectItem); }else { Item selectItem = new Item(item.type, capacity-selectCapacity); selectItemList.add(selectItem); break; } } //选择结果输出 for (Item item : selectItemList){ System.out.println("选择了类型:"+ item.type+" 的物品,重量为:"+item.weight); } }}运行结果如下:选择了类型:2 的物品,重量为:5.0选择了类型:4 的物品,重量为:10.0选择了类型:1 的物品,重量为:10.0选择了类型:3 的物品,重量为:5.0代码中第 10 行至第 31 行定义了物品的一个内部类,用来存储一个物品的类型、重量、价值、单位重量的价值,并且实现在其中实现了一个对比函数。代码的第 35 至 42 行对应着开始的背包问题的初始化工作,分别初始化了背包容量、物品类型、物品重量、物品价值。代码的第 44 行至 51 行将所有物品按照物品内部类的格式加入数组,并且按照物品单位重量的价值进行降序排序。代码的第 53 行至第 66 行,按照背包问题的贪心选择方法选择对应的物品,并记录选择的物品类型及重量,放入到选择的物品列表中 ,代码的 69 行 71 行输出相关的物品选择结果。
- 3. 要不要使用贪心算法? 使用贪心算法在很多问题上不一定能求得最优解,因此我们再使用贪心算法时需要严格思考使用贪心的策略能否达到我们想要的结果。贪心策略适用的前提是:局部最优策略能导致产生全局最优解。实际上,贪心算法适用的情况很少,一般对一个问题分析是否适用于贪心算法,可以先选择该问题下的几个实际数据进行分析,就可以做出判断。贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即当考虑做何种选择的时候,我们只考虑对当前问题最佳的选择而不考虑子问题的结果。这是贪心算法可行的第一个基本要素。贪心算法以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。 当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。问题的最优子结构性质是该问题可用贪心算法求解的关键特征。在介绍完贪心相关的概念、实现思路、缺陷以及相关适用场景后,我们介绍一个关于贪心算法的典型应用场景,帮助我们更好的理解贪心的实现,便于后面完成相应的题解。
- 4. Java 代码实现 在说明希尔排序的整个过程之后,接下来,我们看看如何用 Java 代码实现希尔排序算法。import java.util.Arrays;public class ShellSort { public static void main(String[] args) { //初始化需要排序的数组 int array[] = {9, 2, 11, 7, 12, 5}; //初始化希尔排序的增量为数组长度 int gap = array.length; //不断地进行插入排序,直至增量为1 while (true) { //增量每次减半 gap = gap/2; for (int i = 0; i < gap; i++) { //内部循环是一个插入排序 for (int j = i + gap; j < array.length; j += gap) { int temp = array[j]; int k = j - gap; while (k >= 0 && array[k] > temp) { array[k + gap] = array[k]; k -= gap; } array[k + gap] = temp; } } //增量为1之后,希尔排序结束,退出循环 if (gap == 1) break; } //打印出排序好的序列 System.out.println(Arrays.toString(array)); }}运行结果如下:[2, 5, 7, 9, 11, 12]代码中的第 8 行初始化一个需要排序的数组,后面按照从小到大的排序规则,实现了数组的排序。第 12 行至 30 行是整个希尔排序的流程。第 14 行代码表示希尔排序中的增量每次整除 2 取得,第 17 行至 25 行是一个 for 循环结构,表明按照增量进行插入排序。最后第 32 行代码输出排序好的数组。
- 5. 贪心算法的 Python 代码实现 有了宝物的单位价值之后,接下来我们需要对宝物按照单位价值进行排序,使用 python 自带的 sort 方法即可。注意要保持宝物的价值和总量一起变化,所以需要将宝物的重量、价值以及单位价值作为一个整体,然后进行排序:pre_value = []for i in range(len(ts)): pre_value.append([ts[i], ws[i], ts[i] / ws[i]])# 按照单位价值从大到小进行排序pre_value.sort(key=lambda d: d[2], reverse=True)接下来就是按照贪心算法从大到小选择,直到宝物价值超出剩余的运载价值,然后将宝物切割带走:for i in range(len(pre_value)): if pre_value[i][1] <= t: # 从大到小开始装 w += pre_value[i][0] # 每装一个运载能力减去宝物重量 t -= pre_value[i][1] else: # 可以取走宝物的一部分,达到最大装载 w += pre_value[i][2] * t break整体给出洞中取宝问题的贪心实现,如下:def get_treasures(ts, ws, t): """ ts: 宝物价值 ws: 宝物重量 t:最大运载能力 """ w = 0 # 计算宝物的性价比 pre_value = [] for i in range(len(ts)): pre_value.append([ts[i], ws[i], ts[i] / ws[i]]) # 将宝物按单位价值从大到小进行排序 pre_value.sort(key=lambda d: d[2], reverse=True) for i in range(len(pre_value)): if pre_value[i][1] <= t: w += pre_value[i][0] t -= pre_value[i][1] else: # 可以取走宝物的一部分,达到最大装载 w += pre_value[i][2] * t break return wif __name__ == '__main__': ts = [4, 2, 9, 5, 5, 8, 5, 4, 5, 5] ws = [3, 8, 18, 6, 8, 20, 5, 6, 7, 15] t = 30 print("运走宝物的最大价值为:{}".format(get_treasures(ts, ws, t)))还有许多类似的问题,如背包问题、最优装载问题、教室调度问题等等,都可以使用贪心算法解决。但是我们一定要找对贪心的值,这样才能确保得到最优的解。
贪吃蛇代码java相关搜索
-
tab
table
tableau
tablelayout
table样式
taif
tail
talk
tamcat
tan
target属性
task
tbody
tcl tk
TCP IP
tcp ip协议
tcpdump
tcpip
tcpip协议
tcp连接