贪吃蛇

因为造轮子,我一个月就转正了 | 原力计划

[亡魂溺海] 提交于 2020-04-26 17:42:48
作者 | Baldwin_KeepMind 责编 | 伍杏玲 出品 | CSDN博客 2019年6月,我通过社招入职现在所工作的公司,理论上应该有三个月时间的试用期,只有试用期表现良好我才有机会转正,但因为一次优化代码过程中造了一个轮子,我获得了一个月转正的机会。 我是一个懒人,又特别喜欢琢磨,在工作的过程中我发现有一个模块运行非常的慢,主要原因是在这个模块种需要大量的进行数据库操作,而目前公司业务扩大,在数据库中已经有上亿条数据,每次对这个表进行操作,都需要花费将近3S的时间,而实际上,整个流程走下来,程序也就花费4S的时间,所以我就特别想把这段代码优化一下,将代码的耗时降低下来, 经过一个星期的努力,轮子的初版发布,同事们用完之后都觉得不错,然后老大就给我递交了提前转正申请,我工作一个月就顺利转正了。 现在将我当时造轮子的主要思路在这里写下来,希望能给你一点启发。 轮子相关 首先,我们现在所说的轮子可不是汽车上的轮子,之所以叫“轮子”,是为了更好的理解。 汽车轮子是圆的,这种圆形轮子已经被各界广泛认可是比较好的结构,我们无论怎么去做,也很难超越“圆轮子”,所以我们只能在“圆轮子”的基础上去<重复发明轮子>,即是所说的造轮子。但是有一句话叫做“不要重复造轮子”,因为无论我们怎么努力,也很难去超越以前已经有的轮子,那我们为什么还要去造轮子呢? 1.只有我们自己才懂得我们的需求

一行代码可以干什么,运行之后,这位程序员要跑路了

夙愿已清 提交于 2020-04-09 05:41:38
一款贪吃蛇游戏,大概需要20行左右的代码,哪怕是一个最简单的web页面,也需要多行代码才能实现,但下面这位小伙子,却成功的使用一行代码,删除了公司的数据库,甚至连备份文件,都删得干干净净,算是从删库到跑路的典型了。 一名叫Marco Marsala的程序员,是一家小型主机托管公司的程序员,这是一家拥有1500多个客户的公司,虽说还达不到大富大贵的地步,但小子日也过的非常惬意。 然而,就因为一串代码,彻底毁了这家公司。 他运营的Bash脚本中,有这么一行代码:rm-rf{foo}/{bar},这行代码的意思是,删除foo和bar两个文件夹,并且无需确认。原本是一个再正常不过的删除命令,可是Marco并未定义foo和bar,也就是说,这个命令编程了rm-rf/。 这是一个让无数程序员闻风丧胆的命令。 来源: oschina 链接: https://my.oschina.net/u/3611008/blog/1934572

200行PYTHON代码实现贪吃蛇

生来就可爱ヽ(ⅴ<●) 提交于 2020-04-07 21:39:09
200行Python代码实现贪吃蛇 话不多说,最后会给出全部的代码,也可以从 这里 Fork,正文开始; 目前实现的功能列表: 贪吃蛇的控制,通过上下左右方向键; 触碰到边缘、墙壁、自身则游戏结束; 接触到食物则食物消失,同时根据食物类型身体会变长; 目前长度显示; 暂停、死亡界面; 运行动图 代码片段分析 各个部分绘制的代码 # 游戏背景以及最下方用于显示文字的背景 def draw_background(): # white background screen.fill(COLORS['white']) pygame.draw.rect(screen,COLORS['black'],(-100,GAME_SIZE[1],3000,200),0) # 绘制墙壁 def draw_wall(): for xy in wall_list: pygame.draw.rect(screen,COLORS['darkgray'],(xy[0]-WALL_WIDTH/2,xy[1]-WALL_WIDTH/2,WALL_WIDTH,WALL_HEIGHT),0) # 绘制蛇,包括头和身体 def draw_snake(): head = snake_list[0] pygame.draw.circle(screen,COLORS['darkred'],(head[0],head[1]),int

手机诞生 47 年后,人们已不再用它来打电话

做~自己de王妃 提交于 2020-04-06 19:16:32
摘要 近半个世纪的兴衰沉浮,手机已经早已不是当年模样。 1973 年 4 月 3 日,当摩托罗拉工程师马丁·库珀用重量超过 900 克的「大哥大」成功拨出电话时或许不会想到,43 年后的今天手机竟然会变得如此小巧轻薄,并和我们每个人产生不可分割的联系。 在近半个世纪的时间里,「大哥大」变成了越来越小巧轻便的智能手机,人们也早已不再只是用它来打电话,反而是用它来完成从工作到生活几乎各种事情。那么这些年它到底经历了哪些变化?又有哪些事情从未改变?在今天这个特殊日子极客之选就带大家一起来回顾一下手机这些年的变与不变。 从「砖头」到「钱包」 体积的变化是最明显的变化,最早面向市场的「大哥大」摩托罗拉 DynaTAC 体积大小和球鞋相当,重量则有 794 克,在今天看来几乎相当于「砖头」了,一根长长的天线从远处一眼就能辨别,当年用它的人个个都算得上是「麒麟臂」。不过别看它如此笨重,当年买得起的那些人可真的是「土豪」,这款产品上市价格高达 3995 美元,相当于现在的 9831 美元,可并不是人人都消费得起。 马丁·库珀和 摩托罗拉 DynaTAC, 图自维基百科 如今的手机体积早已缩小到手掌大小,重量轻到一百多克,突出的天线也融入边框消失不见,形状和我们日常用的钱包差不多。手机的价格也从几百元到上万元覆盖全面,不再是少数人的稀罕物品。而伴随电子元器件的集成度越来越高

用unity制作贪吃蛇小游戏

丶灬走出姿态 提交于 2020-04-06 12:36:10
一、游戏运行界面 游戏规则:当蛇头每吃到一块食物,蛇身会长一截;当蛇头碰到蛇身或者四周墙壁时,游戏结束。 二、食物自动生成脚本(foodCreate) using System.Collections; using System.Collections.Generic; using UnityEngine; public class FoodCreate : MonoBehaviour { public GameObject s_food; public int x_limit = 30; public int y_limit = 16; //自动生成的食物坐标范围 void food() { int x = Random.Range(-x_limit, x_limit); int y = Random.Range(-y_limit, y_limit); Instantiate( s_food ,new Vector2(x, y),Quaternion.identity); } // Use this for initialization void Start () { InvokeRepeating("food", 2, 3);//第二秒开始,每隔三秒生成一个 } // Update is called once per frame void Update () { } } 三

Unity贪吃蛇游戏制作过程

萝らか妹 提交于 2020-04-06 08:21:24
成果展示 操作步骤 新建一个2D工程项目,导入资源包 。新建三个文件夹,分别命名为“Scene”,“Prefebs”和“Scripts”,用于存放游戏场景,制作的预制件和脚本。 新建一个plane,命名为BackGround,附上资源包中的Ground材质。添加一个灯光,给游戏场景打光。新建一个Cube,命名为SnakeHead,附上SnakeHead材质。新建一个Cube,命名为SnakeBody,附上SnakeBody材质,并拖入Prefebs文件夹。再新建一个Cube,命名为Food,附上Food材质,拖入Prefebs文件夹,由于后期食物随机产生。在BackGround中新建四个空项目,当作游戏场景的边界,当蛇碰到边界或者自己的身体的时候,游戏结束。注意:要删去背景的Box Collider组件,否则蛇身会一直碰到背景,导致游戏无法运行。 新建一个脚本,命名为MoveSnake,通过这个脚本让贪吃蛇动起来。脚本内容如下: using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Linq; using UnityEngine.SceneManagement; public class MoveSnake : MonoBehaviour { List

Unity2D贪吃蛇小游戏制作

你说的曾经没有我的故事 提交于 2020-04-06 06:07:20
1.导入资源包建立基础文件夹 2.用quad建立背景 更改大小(注意应为奇数倍放大): 建立材质,指定贴图: 3.用cube创建蛇头: 4.更改摄像机大小: 5.创建编写蛇头移动脚本: 代码如下: 6.用cube创建食物: 变成预置键放入相应文件夹: 编写食物随机出现脚本,代码如下: 将此脚本绑在摄像机上 选择预置键: 7.给蛇头添加rigidbody并去掉重力 勾上 8.给food添加标签 9.编写食物被吃掉销毁代码: 10.给food也加上rigidbody 更改范围: 11.cube做一个蛇身做成预置键 长出蛇身代码编写: 绑给蛇头并勾上 12.新建场景 以及text并更改一些数值 13.编写场景切换代码: 14.切换回之前的场景,建立空对象,建立边界: 这样蛇头在碰到边界也会重新开始游戏 完成! 来源: oschina 链接: https://my.oschina.net/u/4462209/blog/3213143

2D游戏作业:贪吃蛇

风格不统一 提交于 2020-04-06 05:59:59
1.游戏介绍 这款游戏通过上下左右键来引导贪吃蛇吃到食物从而贪吃蛇越变越长,当贪吃蛇碰到窗口的四壁是贪吃蛇撞死从而游戏结束。 2. 开发工具 Visual Studio Code 3.部分代码介绍 导入模块 import pygame,sys,time,random from pygame.locals import * 设置窗口 pygame.init() fpsClock = pygame.time.Clock() playSurface = pygame.display.set_mode((640,480)) pygame.display.set_caption('贪吃蛇游戏') 定义颜色 redColour = pygame.Color(255,0,0) blackColour = pygame.Color(0,0,0) whiteColour = pygame.Color(255,255,255) greyColour = pygame.Color(150,150,150) 初始化变量 snakePosition = [100, 100] snakeSegments = [[100, 100], [80, 100], [60, 100]] raspberryPosition = [300, 300] #位置 raspberrySpawned = 1 #是否吃到树莓

pygame实现贪吃蛇游戏

两盒软妹~` 提交于 2020-04-06 02:50:55
#导入模块 import sys , time , random , pygame from pygame.locals import * #框架 pygame.init() fpsClock=pygame.time.Clock() playSurface=pygame.display.set_mode(( 640 , 480 )) pygame.display.set_caption( '贪吃蛇游戏' ) #定义颜色 redColour =pygame.Color( 255 , 0 , 0 ) blackColour=pygame.Color( 0 , 0 , 0 ) whiteColour=pygame.Color( 255 , 255 , 255 ) greyColour=pygame.Color( 150 , 150 , 150 ) #初始化了一些程序中用到的变量 snakePosition=[ 100 , 100 ] snakeSegments=[[ 100 , 100 ] , [ 80 , 100 ] , [ 60 , 100 ]] #树莓位置 raspberryPosition=[ 300 , 300 ] #是否迟到树莓,1为没有吃到,0是吃到 raspberrySpawned= 1 direction= 'right' changeDirection

贪吃蛇游戏

大兔子大兔子 提交于 2020-04-06 01:48:32
先建造一个场景 加入背景 灯光和蛇头 在四周建立Empty添加Boxcollider作为边界 之后将食物和蛇身做成预制件 制作游戏结束场景,添加一个text文本改为“贪吃蛇游戏,点击鼠标左键继续” 建立脚本添加在文字上 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class SnakeUI : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { if(Input.GetMouseButtonDown(0)) { SceneManager.LoadScene(1); } } } 给食物添加脚本使其随机在地图上生成 using System.Collections; using System.Collections.Generic; using UnityEngine; public class FoodCreat : MonoBehaviour { public GameObject s_food;