首页
学习
活动
专区
工具
TVP
发布

PONG - 100行代码写一个弹球游戏

今天跟大家讲一讲:如何做游戏 游戏的主题是弹球游戏《PONG》,它是史上第一款街机游戏。因此选它作为我这个游戏开发系列的第一期主题。 游戏引擎用的是 Python 的一个游戏库:pgzero。...它是对 pygame 的一个封装,让你不需要写多余的套路代码,只要配置游戏的内容逻辑即可。 我们这个游戏用它来写,一共只需要100行代码。 首先需要安装 python 环境。...def dead(self, side): scores[side] += 1 self.reset() 这样,一个最最简单的,双人版弹球游戏就完成了。...或者,给一侧板增加一点自动追踪的代码:让板的位置随着球的位置移动。这也算是一个游戏AI了。...代码已经开源,获取请在公众号“Crossin的编程教室”后台回复关键词:pong

62420
您找到你想要的搜索结果了吗?
是的
没有找到

关于java中普通代码块、构造代码块与静态代码

1.普通代码块 public static void main(String[] args) { /*普通代码块: *直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。...; {   System.out.println("这里是普通代码块B"); } } 执行结果:这里是普通代码块A      这里是普通代码块B 2.静态代码块与构造代码块 在java...如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行。 ps:1 静态代码块不能存在于任何方法体内。...1"); } { System.out.println("这里是A中的普通代码块2"); } } 执行结果: 这里是静态代码块 这里是普通代码块A 这里是A中的普静态代码块1 这里是A中的普通代码块...1 这里是A中的普通代码块2 这里是普通代码块B 优先级总结:静态代码块>Main()>构造代码

1.3K30

关于代码重构

重构是软件开发过程中一个重要的事情之一,重构与重写的区别: 重构:不是对已有代码的全盘否定,而是对不合理的结构进行调整,合理的模块进行改动;利用更好的方式,写出更好,更有维护性代码。...重写:已有的代码非常复杂混乱,难以修改,重构的时间还不如重新写一个来得快;根据需求另立一个项目,完全重写。 车子脏了就得洗,坏了就得修,报废了就得换。...重构时机 添加功能时 修补错误时 复审代码时 怎样重构 重命名 提炼函数 去除不必要的参数 用对象取代参数 隐藏函数 用常量名替换常量值 用对象取代数组 判断放入循环内,减少循环代码 相同(或及相似)的代码重复出现...减少嵌套的层次,如果有 If 判断,对否定条件提前退出 用设计模式改善代码设计 需求增加,业务变更,需要我们持续重构,持续优化,此恨绵绵无绝期。 ?

54330

三维世界中相机的位置参数

上篇文章带读者完成了一个3d弹弹球的加强版,读者顺便了解了下灯光和阴影的基本用法,关于相机的位置参数问题,我们在前文只是简单提过,本篇文章,想和读者分享下相机的位置参数问题。...本文是threejs系列的第五篇,阅读前面的文章有助于更好的理解本文: ---- 1.一个简单的案例,理解threejs中几个基本概念 2.三维世界中的坐标系 3.3d弹弹球 4.3d弹弹球(加强版)...在3d弹弹球一文中,我们创建了一个plane平面,平面上有一个球弹来弹去,本文因为只考虑相机问题,因此我将页面模型简化,只留下坐标系和弹弹球,去掉plane,代码如下: var scene = new...关于相机的位置参数,这里主要介绍三个:position、up以及lookAt。...position 首先position表示相机的位置,相机位于不同位置可以看到不同的场景,这个因该很容易理解,例如在上文的案例中,将相机沿x轴水平移动,移动后,就能看到z轴了,添加如下代码: camera.position.x

1.3K70

关于代码分层”的思考

利用目录的形式对开发者进行约束,能够使代码整体结构更加清晰,功能分工更加明确。 我一直“以为”我对分层的感受能力还是很强的,但是回顾上星期写的代码,才让我感觉我对分层的理解一直停留在表面。...大家都知道: 在逻辑上,可能使用概念分层,比如AO,DAO; 在功能上,可能使用模块名进行约束,比如xxx_order、xxx_log; 进一步到代码上,利用目录进行分层,比如xxx_logic、...以我当前参与的项目为例,我需要实现model层(我理解为数据访问层)的逻辑功能,(代码)分层如下: 顶层的Account提供给外部使用,封装了账户的所有操作(流水只是账户变动的附加记录,理论上也是...我一开始是在Account中进行统一分层,但是统一分层会使得局部代码快速膨胀,分支过多难以理解,结构不清晰,最终选择各个方法自行处理状态分支。...对个人来说,实现时的逻辑分层更重要,开发阶段就应该注意逻辑分层的抉择,尽量满足开闭原则,才能写出容易理解、结构清晰、易扩展的代码

32720

关于 Java 的简介

Java 使编写、编译和调试编程变得容易。它有助于创建可重用的代码和模块化程序。 Java 是一种基于类、面向对象的编程语言,旨在尽可能减少实现依赖项。...一种为开发人员编写的通用编程语言,只要编写一次就可以在任何地方运行,编译后的 Java 代码可以在所有支持 Java 的平台上运行。...但是随着 Java 编译器将源代码编译为字节码,而 JVM 执行此字节码以机器依赖于操作系统的可执行代码java 集成了强大的功能。...; } } 输出 Welcome to Java 解释: 1、注释:注释用于解释代码,在 Java 或 C 或 C++ 中以类似的方式使用。...那么,为什么关于“元宇宙”的话题会如井喷式爆发?它与我们现存的时空又有什么关系呢?

59421

java getclassloader_java-关于getClass().getClassLoader()

Integer.class.getClassLoader().getResource(“*********”);这一句抛出空指针异常,定位为getClassLoader()返回null,查了一下jdk的文档,原来这里还有一个陷阱: jdk中关于...上面的英文可以用下面的话来理解: 装载类的过程非常简单:查找类所在位置,并将找到的Java类的字节码装入内存,生成对应的Class对象。...Java的类装载器专门用来实现这样的过程,JVM并不止有一个类装载器,事实上,如果你愿意的话,你可以让JVM拥有无数个类装载器,当然这除了测试JVM外,我想不出还有其他的用途。...为什么说它神龙见首不见尾呢,因为你根本无法在Java代码中抓住哪怕是它的一点点的尾巴,尽管你能时时刻刻体会到它的存在,因为java的运行环境所需要的所有类库,都由它来装载,而它本身是C++写的程序,可以独立运行...classloader的话,有些jdk的实现是会返回一个null的,比如说我用 new Object().getClass().getClassLoader()的话,会返回一个null,这样的话上面的代码就会出现

32810

关于代码的那些事

在发布了关于代码的那些事(上)之后,发现这篇文章竟然意外的很受欢迎,很多人也描(tu)述(cao)了各自代码中这样或者那样的问题。...虽然刚毕业的同学对于代码质量都很用心,但最终呈现出来的质量仍然没能达到“十分优秀”的程度。 究其原因,主要是不了解好的代码“应该”是什么样的。 2.什么是好代码代码的第一步是理解什么是好代码。...在准备bootcamp的课程的时候,我就为这个问题犯了难,我尝试着用一些精确的定义区分出“优等品”、“良品”、“不良品”;但是在总结的过程中,关于“什么是好代码”的描述却大多没有可操作性 2.1.好代码的定义...其次也需要考虑注释的质量:在代码可读性合格的基础上,注释应该提供比代码更多的信息。文档和注释并不是越多越好,它们可能会导致维护成本增加。关于这部分的讨论可以参考简洁部分的内容。...3.被调用方如果不是声明为线程安全的,那么很有可能存在并发问题(比如java的hashmap)。

25720

关于代码大全2》那点事

代码大全2 代码大全第2版我是2014年12月10日拿到手的,因为很早之前就听过这本书,也看过很多人推荐它,说是编程界中的权威书籍,然后我就去京东下订把这本加上参考文献索引一共九百多页的书买了回公司...看这本书之前我自己其实在开发中也意识到规范的重要性,但考虑的点基本上是在代码层面的,比如包命名规范、变量命名规范、代码封装、类抽象等等,看完这本书之后帮我重新梳理了一遍整个软件构建的过程,让我开阔了眼界...代码大全讲了很多细节,从基础构建讲起,告诉我们在进行软件构建需要了解的基础,需要准备什么;接着告诉我们如何去创建高质量的代码、编程中变量跟语句的最佳实践;然后是如何对代码进行改善,包括调试、重构、代码调整策略和技术...看代码大全可以让我们去学习如何更好的编程,代码虽说最终是交给计算机来解读,不管我们写成怎样,计算机都会按照它的理解方式去理解,然而对人来说,代码的可读性意味着其他编程人员可以更好的去理解程序的意图,我们要写出高质量的代码不容易...然而像代码大全这样的书,是前人不断积累的经验,具有很好的指导的意义,这样的书多看几遍都不嫌多。我推荐大家看这本书是,我们花那么多时间去写垃圾代码,都不愿意作出一些改变吗?

68720
领券