页面正在加载中
请稍候...
免费版本2018-01-05
ETABS TO PERFORM-3D
Author: dinochen1983
Time: 2023-12-31
[小记]ETE2018是由陈学伟(DINO)与李明(LI MING)开发的集成程序,它可以完成结构概念设计
优化设计、模型转换、快速建模,快速验算与结构总信息统计的小程序,在设计的基础上开发,不是纯学术研究
满足工程人员对设计的极致要求。由于程序太巨大量,学习操作的教程会慢慢在DINOCHEN.COM上发布
有兴趣的工程师可以下载试用,我们定期会在微信公众号平台公布程序的最新进展
我们的微信公众号是 DINOSTRU , 或扫码关注, 微信的更新是永远最快的。
ETE2018
Author: dinochen1983
Time: 2023-12-27
ETABS to ABAQUS 内置于 ETE2018
ETABS to ABAQUS
Author: dinochen1983
Time: 2023-12-09
预览模式: 普通 | 列表
50-10
08

Dino Chen 博客汇总帖

www.dinochen.com博主自我介绍(26-Jun-2011)

 DinoBox结构分析小程序
 OpenSEES实例教程
 dinochen1983@qq.com
(1)About Dino Chen 1983 
  陈学伟博士 Dr. CHEN XUE WEI
  Emaildinochen1983@qq.com
  华南理工大学 土木工程系
  結构工程 工学博士
  结构工程师 WSP HONG KONG LTD.
  职位 Senior_Associate 高级助理董事
  研究方向:
高层建筑抗震研究
  有限元分析技术在工程中的应用

  
(2)發表相關論文與著作
    已發表論文總目錄:Dino Chen's Paper 
  
    《OpenSEES》網上實例教程
    結構軟件應用筆記 總目錄

    博士论文题目  剪力墙结构构件变形指标的研究及计算平台开发
    工程应用程序下载  DinoBox系列结构工程工具箱

 学术专著(1)《结构弹塑性分析程序OpenSEES原理与实例》书序与目录

教学职位:香港大学兼职讲师(Guest Lecturer, Univ. of Hong Kong)
主讲科目:CIVL7008 Seismic Design for Building Structures




 

18-12
14

[DINO爱编程]六边形手表问题编程搞定

【DINO爱编程】六边形手表问题编程搞定

【腾讯视频】https://v.qq.com/x/page/c0812be3ri7.html
【bilibili视频】https://www.bilibili.com/video/av38101115/







节选于《500个逻辑游戏》书上170页

问题的描述:


要解决这个令人难以置信的法拉比奥手表比赛,你要做的就是将六边形手表面上从1到12
这几个数字重新排列,使每个边上的3个数字相加的结果等于22。如果解答出来的人不止
一个,那么法拉比奥史弟将宣布“结束营业大减价”

【求解程序的源代码】点击下载此文件:Watch_problem.rar

[OPENSEES]视频教程_单构件静力弹塑性分析

视频平台【腾讯视频】
连接:https://v.qq.com/x/page/y0811zulhp9.html


【小记】本算例介绍单柱(混凝土柱)的弹塑性分析的整个过程 ,主要介绍怎么样在ETABS进行初步建模,在ETO转换模型及最后在TCL代码的修改,完成整个弹塑性的分析,有以下的知识点,需要掌握:

(1)如何在ETABS进行建模
(2)指定每个节点的约束条件
(3)转换成ETO及OPENSEES模型时的注意点
(4)恒定荷载与变化荷载(位移控制)的指定
(5)如何修改记录RECORDER的命令流
(6)如何显示变形
(7)如何增加锁死恒载的命令流  loadConst 0.0



点击下载此文件:Lec03_实例计算参考TCL与ETABS模型文件

18-12
04

[Dong] Do Online Now Guys

[001]MacPaint Simulator: 
         http://www.cloudpaint.com/imageeditor

[002]Crossword Puzzle:
         http://www.boreme.com/posting.php?id=9425&page=1#.VVOtVrpVh5E

18-09
24

OpenSEES教程读者活动_中秋彩蛋

OpenSEES教程读者活动_中秋彩蛋

为了感谢所有购买正版本图书的读者,以下是OPENSEES这本教程的中秋节彩蛋




[记事]参加第三届复杂建筑结构弹塑性分析技术交流会

2018-06-22,参加第三届复杂建筑结构弹塑性交流会,会上主要分享关于ETE的程序开发成果,
经过两年的发展,目前的ETE(中国版)可用于快速评估结构性能的功能,可应用于一键生成超限报告,
基于ETABS及YJK进行复杂的弹塑性模型建模(一键生成模型),采用后处理对结构及构件性能进行整理。
详细内容如下:









由于ETE大部分是关于软件及编程的东西(主要采用电脑去减少工程师的工作量)
而没有太多的学术成分在里面,因此,我在会上介绍了我的导师韩小雷教授这几年来的最重要的研究成果
《广东省基于性能的钢筋混凝土结构抗震设计规程》的编制,主要内容如下
这个是基于性能抗震设计的一个重要的里程碑,期待规范早日推出。


会上看到很多技术大牛,也学习了很多知识,很好的一次交流会。
另,还看到多年没有见面的雷杰同学,现在已经是华东院的大牛人物了。




第三届复杂建筑结构弹塑性分析技术交流会

(2018年6月13-15日 上海)

【小记】我在这次会议的报告主题是:高层结构弹塑性及超限设计的集成系统开发



会议介绍

指导单位:中国勘察设计协会结构设计分会
主办单位:中国建设科技集团股份有限公司、华建集团科创中心结构分析与设计研究所、《建筑结构》杂志社
承办单位:《建筑结构》杂志社、亚太建设科技信息研究院有限公司
协办单位:北京盈建科软件股份有限公司
会议时间:2018年6月13-15日(其中13日报到,14日全天报告,15日上午工程参观)
会议地点:上海虹桥金古源豪生大酒店(上海市闵行区华翔路1989号,近扬虹路)
工程参观:世茂深坑酒店(世界海拔最低的五星级酒店,坑深88米)

一、会议背景

我国《建筑抗震设计规范》(GB 50011—2010)提出了“不规则且具有明显薄弱部位可能导致地震时严重破坏的建筑结构,应按本规范有关规定进行罕遇地震作用下的弹塑性变形分析。此时,可根据结构特点采用静力弹塑性分析或弹塑性时程分析方法”。《高层建筑混凝土结构技术规程》(JGJ 3—2010)也规定,对于B级高度的高层建筑结构和复杂高层建筑结构,如带转换层、连体、多塔结构等,宜采用弹塑性静力或动力分析方法验算薄弱层弹塑性变形。随着建筑高度迅速增长,复杂程度日益提高,完全采用弹性理论进行结构分析计算和设计已经难以满足需要,弹塑性分析方法也就显得越来越重要。
首届复杂建筑结构弹塑性分析技术交流会于2012年在广州成功召开,会议针对弹塑性分析方法中的技术热点问题进行了深入讨论,约300名专家和工程技术人员参加了此次会议。2016年10月20-21日第二届复杂建筑结构弹塑性分析技术交流会在苏州再次召开。会议邀请了行业内近年来在结构弹塑性分析方面积累了丰富经验的设计大师、专家、教授、专业技术人员和软件开发人员,对弹塑性分析方法进行深入探讨,结合工程实例介绍了有代表性的复杂建筑结构的弹塑性分析模型和具体的计算方法,约450名代表参加了此次会议(点击此处查看详情)。
按照既定计划,2018年6月13-15日将在上海召开第三届复杂建筑结构弹塑性分析技术交流会,并组织参观世茂深坑酒店,具体安排如下。



参观项目



会议报名方法

18-06
04

[每周挑战]造物_为打鼓而生的机器人

[每周挑战]造物_为打鼓而生的机器人



当儿子ADAM知道他老爸会造机器人以后,每天就吵着要一个会打鼓的机器人,5月的一天,我终于决定造一个机器人送给ADAM了。那么这次就是介绍打鼓的机器人,就叫他小鼓吧。

以下图片是这个机器人的造型。风格还是用DINO-ROBOT的常用风格。

这次还是与以前一样简单粗暴,采了一只电机,这个电机可以控制两只手。

第1步,在3DSMAX设计出可爱的外型,分以下几个部分:头部(只是装饰),身体,两支棍子。

查看更多...

[每周挑战]造物_造一个星球大战的劳模R2D2



五一劳动节过去了,我们来纪念一下星球大战的,相比于人类,机器人比人类更加劳模。机器人吃得少不怕苦不怕累工作时间长。在星球大战系列电影中,最是劳模的就是R2D2,
基本上这个机器人在星战的每一部电影都出现,包括三步曲、前传及后续的电影都有。以下就是R2D2的造型。



MAKER FAIRE的吉祥物 MAKEY与R2D2进行CROSS OVER会变成什么样子呢,我想就是以下这个样子了。我们就叫它 R2-MAKEY 吧。

这次还是与以前一样简单粗暴,不过这次增加一个黄色小电机,采了两只电机。

第1步,在3DSMAX设计出可爱的R2D2外型,分以下几个部分:垃圾桶身体,两只主动力的“手臂”,支承身体重量的前轮(三轮结构),然后就是MAKEY的头部了。



这是桶内内部结构,只有一个电池,加上一个开关。如果你加上ARDUINO板就可以控制R2D2了。(arduino板的版本以后推出)

查看更多...

18-04
30

[每周挑战]造物_数学正弦波动机器装置

[每周挑战]造物_数学正弦波动机器装置



数学很抽象很难理解,但一旦把它可视化以后,数学会显示得很美,然而让它动起来,它变得很疗愈的。这次【每周挑战】不做机器人,这次做一个数学公式装置,Y=SIN(A)如下图所示。

这次还是与以前一样简单粗暴,一个黄色小电机就可以了。这次要注意,配件数量比较多。

第1步,在3DSMAX设计出可爱的数学装置的外型,板材的大洞口主要就是为了节省材料。它的组成很简单,分以下几个部分:电机支承结构,轴承体系,黄色的小长条,把旋转运动变成长条的上下运动,再带动最上方的圆圈作正弦运动。


这次没有内部结构,全部显示在外面,一个电池,一个电机加上一个开关。
模型如图所示。

与以往的风格一样,这个装置现在为止还不会用到arduino电子版,会基本电路就可以安装了。材料如下:
(1)    2个 1.5V的电池与电池盒
(2)    一个黄色马达(也就是减速电机)
(3)    电焊铁,电线及热融胶枪
(4)    小型开关一个
(5)    电线若干。其它就是用3D打印机打印。

查看更多...

18-04
19

[每周挑战]造物_做孩子喜欢的旋转木马

[每周挑战]造物_做孩子喜欢的旋转木马


在上次制作摩天轮以后,很多网友非常喜欢萌萌的设计,那么一个马达能够制作出来的作品是可以很多的,比如说旋转木马,没错,也就是在乐园整天看到的旋转木马机动游戏。



第1步,在3DSMAX设计出萌萌的旋转木马的外形,带有一定的可爱风格,它的组成很简单,
顶盖+柱子木马+旋转底座,这三个部分就完成了。内部结构还是很简单,一个电池,一个电机加上一个开关。
模型如下图所示。



与以往的风格一样,我们的机器人现在为止还不会用到arduino电子版,会基本电路就可以安装了。材料如下:
(1)    1个 1.5V的电池与电池盒
(2)    一个黄色马达(也就是减速电机)
(3)    电焊铁,电线及热融胶枪
(4)    小型开关一个
(5)    电线若干。其它就是用3D打印机打印。

材料就是这么简单粗暴,小学生都能做这个小型装置。
注意,由于只采用一个马达,没有复杂电路。

第2步,在3DSMAX将不同颜色不同部分的组件分别排版,为了第三步的打印。




 
第3步,采用3D打印机进行打印,按不同颜色打印出来的组件如下图所示。



第4步,对构件进行粘合,采用热融胶枪连接部件,如下图所示。





第5步,实现设计的电路,连接电机与电池,电机加上轮子(黄色的),然后把整个电机装在盒子内,如下图所示。




整个旋转木马的最终结果如下图所示。
 


第6步, 测试机器人,打开开关,旋转木马就动起来了,在这个时侯配上一个《陳奕迅孤兒仔》就更配了

[每周挑战]造物_创客机器人改造Makey坦克车



创意往往来自于cross-over设计,(杂交设计方法),那么本周就来cross-over一下创客节的吉详物Makey.
cross-over:   创客Makey + 坦克车 + 洛克人=Makey坦克车,如下图所示.

第1步,在3DSMAX设计Makey坦克车的外形,带有一定的可爱风格,它的组成很简单,MAKEY的头部与身体,手是洛克人的炮手还有下部就是坦克车体。
 

与以往的风格一样,我们的机器人现在为止还不会用到arduino电子版,会基本电路就可以安装了。材料如下:
(1)    两个 1.5V的电池与电池盒
(2)    一个黄色马达(也就是减速电机)
(3)    电焊铁,电线及热融胶枪
(4)   小型开关一个
(5)    电线若干。其它就是用3D打印机打印。
材料就是这么简单粗暴,小学生都能做这个小机器人。
注意,由于只采用一个马达,没有复杂电路,机器人只会往前走,与以前的四驱车是一样一样的。

第2步,在3DSMAX将不同颜色不同部分的组件分别排版,为了第三步的打印。


 
第3步,采用3D打印机进行打印,按不同颜色打印出来的组件如下图所示。





第4步,对构件进行粘合,采用EPOXY超级胶或采用热融胶枪连接部件。

查看更多...

[每周挑战]造物_造一个机器怪兽之食钱兽


2018年的大电影环太平洋要上映了,那么这次造物挑战就造一个机器人与怪兽的合体,食钱币的机器人怪兽,食钱兽。

 

第1步,还是在3DSMAX设计食钱怪的外形,带有一定的可爱风格还有大牛角,牙也很是锋利的。拿着一个盘子,只要给它钱币,它就不会搞破坏了。

  

与以往的风格一样,我们的机器人现在为止还不会用到arduino电子版,会基本电路就可以安装了。材料如下:
(1)    两个 1.5V的电池与电池盒
(2)    一个黄色马达(也就是减速电机)
(3)    电焊铁,电线及热融胶枪
(4)    回形针(用来导电),这次不需要开关
(5)    电线若干。其它就是用3D打印机打印。
材料就是这么简单粗暴,小学生都能做这个小机器人。
注意,这次机器人对外来动作有所反应,但一个传感器也没有装,这就是有趣的地方了。

第2步,在3DSMAX将不同颜色不同部分的组件分别排版,为了第三步的打印。

 
第3步,采用3D打印机进行打印,按不同颜色打印出来的组件如下图所示。

 
第4步,对不活动的构件进行粘合,采用EPOXY超级胶或采用热融胶枪连接部件。
 

第5步,实现设计的电路,连接电机与电池,电机加上轮子(橙色的)与电机支架,然后把整个电机组装在食钱兽的身体盒子内,如下图所示。

 

整个机器人的电路如图所示


第6步,机器人安装上接触的回形针与钢线,就完成了整个机器人,如下图所示:
 
机器人的内部机器模式如下图所示:



第7步, 测试机器人,把硬币放在机器人的盘中,电脑模拟动画是这样的,而实际情况是这样的。食钱机器兽可以帮大家储钱喔。



[ETE教程]PERFORM-3D反应谱分析教程

【小记】本期仍然从实战操作角度,
阐述PERFORM 3D反应谱分析

本文大纲如下:
P3D反应谱分析
本次文章将实现一个小目标
 * 掌握PERFORM 3D 反应谱分析操作

详细的PPT(PDF格式)下载:
点击下载此文件:ETE实战类-如何进行Perform 3d反应谱分析










详细的PPT(PDF格式)下载:
点击下载此文件:ETE实战类-如何进行Perform 3d反应谱分析

[OPENSEES]操作实例视频教程(1) 基本入门操作

【小记】OPENSEES实例教程相对应的视频教程 今天发布。首发平台是技术邻与腾讯视频。

以下是视频教程:
视频地址:https://v.qq.com/x/page/y0606iipb3w.html

每周挑战,造物,314/圆周率节造一个自转机器人

今周又整机器人了,整一个振动机器人,名字叫四爪,机器人的走动是靠偏心振子振动引起的,那么机器人只需要,电池,马达,开关,电线若干,超级胶,与3d打印。

第1步,在3dsmax.设计好机器人四爪的外型。振动机器人应减少与地面的接解,用点接触是可以的。



第2步,3dsmax分部分分颜色,排板。

第3步,采用3d打印机打印岀来。

第4步,采用胶水epoxy 对部件进行粘合组装

查看更多...

【小记】2018年的三(女)八(神)节,充满创意的创客一定要做点什么送给老婆。我记得有一天老婆逛街时看到一个木制的摩天轮音乐盒(388元),我说我也能做出来,她不相信,现在我就用3D打印机加上一个马达做给她看看。


第1步,还是在3DSMAX设计出整个摩天轮的造型(为什么我会说“还是”)。如下图所示。
原理是,电池(采用一个1.5V的电池即可)带动减速马达(小黄色电机),再带动橡皮筋传动给上方的轮子,轮子带动整个轮架转动,小车箱也随着转动起来,就是这么简单,最近的作品都是,一个电池、一个电机(LED灯)再加上一个开关就可以了,单机机械,特别适合小朋友。

第2步,在3DSMAX将不同颜色不同部分的组件分别排版,为了第三步的打印。




第3步,采用3D打印机进行打印,打印出来的组件如下图所示。

第4步,对不活动的构件进行粘合,采用EPOXY超级胶。
 
第5步,实现设计的电路,连接电池,电机与开关,电机加上轮子(橙色的),然后把整个电机组装进摩天轮的结构中,如下图所示。
 
第6步,电池盒与马达与盒子的顶板胶合,采用热融胶枪,然后加上橡皮筋,如下图所示。
 

第7步,加上盒子,每一节装上小车箱(绿轴与透明车箱),然后就大功告成,打开开关转起来。

 
[每周挑战]造物_元宵节造一个属于MAKER的灯笼

打算在元宵节之前,给小朋友制作一个灯笼,那么我们就做一个属于MAKER的灯笼吧,总不能让3D打印机吃灰,我们3D打印一个好玩的灯笼吧。以下是参考图片,就是MAKER FAIRE的LOGO,也称为创客机器人



第一步,采用3DSMAX设计这个机器人灯笼的外壳


这个是机器人的正面3D模型照片,我作了一点点Q版的处理,显示更加可爱点




第二步:将不同颜色的模型分块打印,最后用胶水拼接,我只采用2种颜色,白色透光与橙色透光的PLA








第三步,3D打印全部构件出来,如下图所示,分块后,打印其实很快的,一天内可以搞定



第四步,全部构件采用超级胶水拼接,接完准备开始拼接电路



电路设计很简单:
(1)需要9V电池供电
(2)采用8个大粒的LED灯,每个灯采用510欧的电阻进行保护
(3)正极接上小开关
(4)接线,全部灯是并联关系,电路采用热融胶枪固定在3D打印的盒子内。

组装完成后,就得到以下的样子


第五步,合上头部的盖子,接上挂绳与木杆,打开开关,就是一个MAKER创客的灯笼了。
如果加上ARDUINO板(小板)去控制LED灯,就变成一个闪灯,变色灯或者呼吸灯,可以自由发挥









DINOCHEN.COM祝广大网友,2018年元宵节快乐。
[每周挑战][编程]multiplication circles(乘法圆)编程


【小记】懂编程的人一定知道数学其实是很美的,数学就是一门艺术,自然的艺术,特别是图形学与可视化就可以表述出来。
以九九乘法表为例,是很枯燥的,但是一但把乘法用圆与直线表述出来,就可以形成美丽的自然图案。

点击下载此文件:程序原理图的PPT

点击下载此文件:程序源代码及可执行程序EXE

以下是视频教程:
视频地址:https://v.qq.com/x/page/o0557dz78tv.html



【STEM】DINOMAKER创客教程 之 【创意编程系列】是用来分享编程的乐趣,也是成为创客必备的技能。
以下是编程得到的乘法圆的动态图
主要的源代码
=====================================================================
PROCEDURE TFORM1.DRAW_LINES;
VAR DIV1:INTEGER;
    NUM2:INTEGER;
    AX,AY:INTEGER;
    BX,BY:INTEGER;
    CX,CY:INTEGER;
    I:INTEGER;
    R:INTEGER;
BEGIN
CX:=IMAGE1.Width DIV 2;
CY:=IMAGE1.Height DIV 2;
R:=180;
DIV1:=STRTOINT(EDIT1.Text);
NUM2:=STRTOINT(EDIT2.Text);
IMAGE1.Canvas.Pen.Color:=CLWHITE;
IMAGE1.Canvas.Brush.Color:=CLWHITE;
FOR I:=0 TO DIV1 DO
BEGIN
  AX:=ROUND(CX+R*COS(DEGTORAD(360/DIV1*I)));
  AY:=ROUND(CY+R*SIN(DEGTORAD(360/DIV1*I)));
  BX:=ROUND(CX+R*COS(DEGTORAD(360/DIV1*I*NUM2)));
  BY:=ROUND(CY+R*SIN(DEGTORAD(360/DIV1*I*NUM2)));
  //
  IMAGE1.Canvas.MoveTo(AX,AY);
  IMAGE1.Canvas.LineTo(BX,BY);
END;
END;
=====================================================================





=================================================================
18-02
21

[每周挑战][编程]贪吃蛇游戏SNAKE编程




这是2018年2月第一周的每周挑战,现在才把它整理出来,本集挑战的内容是游戏编程,本章内容非常适用于小学生的STEAM教学,主要讲述一个风迷全球的小游戏是怎么编的。这个游戏就是内置于NOKIA手机的贪吃蛇小游戏。



本次游戏编程只讲述最简单的原理,没有用到优化的算法,速度有点慢。
编程所采用的编程语言还是采用DELPHI,大家可以根据原理采用其它语言如C#进行编制。
那么我们就开始吧。

点击下载此文件:snake的源代码与可执行程序EXE文件



第一步,设计程序界面,如下图所示:


界面的介绍:
(1)中间区是绘图区,实时绘制蛇SNAKE与苹果的位置
(2)右边有两个钟,一个用来实时显示画面,一个用来实时判断蛇的状态,行走,吃东西,撞尾等。
(3)菜单只有一个功能,开始游戏与重新开始游戏
(4)分数显示的LABEL用来实时显示分数
(5)如果游戏结束GAME OVER的label会显示出来

就是这么简单。

第二步:指定贪吃蛇与苹果的变量

TYPE TSNAKE=RECORD
PX,PY:INTEGER;
SX,SY:INTEGER;
DIR:INTEGER;
END;

这么简单的游戏采用TYPE RECORD就可以了。PX,PY是蛇的坐标,而SX,SY可以理解成向X方向与Y方向行走的速度。
DIR就行走的方向,也就是上下左右。这个记录RECORD是很简单的。
蛇要吃的苹果,也就是不断换位置出现的点,它的变量可以设计成如下:

TYPE TFOOD=RECORD
PX,PY:INTEGER;
END;

PX,PY代表苹果的坐标

第二步:设计全局变量

var
  Form1: TForm1;
  SNAKE:TSNAKE;   // 代表蛇头
  SCL:INTEGER;     
// 每一个格子的w像素寸
  FOOD:TFOOD;      // 代表苹果
  TAIL:ARRAY[0..100]OF TSNAKE;  //代表蛇的身体,最多蛇可以有100节身子
  NTAIL:INTEGER;   //身子节的总数量
  SCORE:INTEGER;  //总得分


第三步:点击上下左右后蛇头的反应设计

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  IF (KEY=VK_LEFT) AND (SNAKE.DIR<>2) THEN
    SNAKE.DIR:=1;
  IF (KEY=VK_RIGHT) AND (SNAKE.DIR<>1) THEN
    SNAKE.DIR:=2;
  IF (KEY=VK_UP) AND (SNAKE.DIR<>4) THEN
    SNAKE.DIR:=3;
  IF (KEY=VK_DOWN) AND (SNAKE.DIR<>3) THEN
    SNAKE.DIR:=4;
end;

这一段代码非常好理解了,键盘按下“上”,蛇往上走,但是要注意的是,如果蛇当前就向下走的,按下往“上键 ”,蛇是不能掉头走的。


第四步:最关键的一步,也就是时钟2的进程,每时每刻判断及更新蛇、蛇身与苹果的状态。以下就是全部的代码片:

procedure TForm1.Timer2Timer(Sender: TObject);
VAR I:INTEGER;
    CR:BOOL;
begin
CR:=FALSE;

这个变量是判断蛇尾是不是撞到蛇头

FOR I:=1 TO NTAIL-1 DO
BEGIN
 IF (TAIL[I].PX=SNAKE.PX) AND  (TAIL[I].PY=SNAKE.PY) THEN
 BEGIN
   CR:=TRUE;
   BREAK;
 END;
END;

这个代表:如果蛇头的位置与蛇身的任何一个位置相同,代表撞了,CR变成TRUE

IF CR THEN
BEGIN
 TIMER2.Enabled:=FALSE;
 LABEL3.Visible:=TRUE;
END;

这个代表:CR变成TRUE,代表撞尾了,时钟2停止,GAMEOVER的文字显示出来

FOR I:=NTAIL-1 DOWNTO 1 DO
BEGIN
TAIL[I+1]:=TAIL[I];
END;

这个代表:正常运行时,每个时刻,蛇头前进一步,它的每一格身子的位置等于这个格的前一格的位置,
也就是递推每一格的位置,动态看起来,就好像蛇在移动

TAIL[1].PX:=SNAKE.PX;
TAIL[1].PY:=SNAKE.PY;

这个代表:最后,每一格的蛇身的位置就会等于蛇头的位置

IF SNAKE.DIR=2 THEN
BEGIN
SNAKE.SX:=1;
SNAKE.SY:=0;
END;
IF SNAKE.DIR=1 THEN
BEGIN
SNAKE.SX:=-1;
SNAKE.SY:=0;
END;
IF SNAKE.DIR=4 THEN
BEGIN
SNAKE.SX:=0;
SNAKE.SY:=1;
END;
IF SNAKE.DIR=3 THEN
BEGIN
SNAKE.SX:=0;
SNAKE.SY:=-1;
END;

这个代表:蛇不同的运动方向,蛇两个坐标的运动速度,例如,如果蛇向左运动
它的X方向的速度是(-1),而它的Y方向的速度就是(0)

SNAKE.PX:=SNAKE.PX+SNAKE.SX;
SNAKE.PY:=SNAKE.PY+SNAKE.SY;

这个代表:蛇有了两个方向的速度,更新的蛇头位置就是:新坐标=旧坐标+移动速度

IF SNAKE.PX>20 THEN SNAKE.PX:=0;
IF SNAKE.PY>20 THEN SNAKE.PY:=0;
IF SNAKE.PX<0 THEN SNAKE.PX:=20;
IF SNAKE.PY<0 THEN SNAKE.PY:=20;

这个代表:由于游戏的空间只有20个格子,如果蛇向右走到尽头,就会晚时空隧道一样从最左边出来
这也是原始的SNAKE游戏的设置,当然你也可以设计边界

IF (SNAKE.PX=FOOD.PX) AND (SNAKE.PY=FOOD.PY) THEN
BEGIN
ADD_TAIL;
RANDOMIZE;
FOOD.PX:=ROUND(1+RANDOM*18);
FOOD.PY:=ROUND(1+RANDOM*18);
END;

这个代表:蛇的空间位置与苹果的空间位置重合了,代表吃到苹果,那么蛇就会增加尾巴,同时
苹果会在20X20的空间随机出现。

end;

第五步:时钟一的进程,实时绘制蛇与苹果的情况
(如果上述前四步全部编好了,只有数据在计算,图形没有显示,
编好了这一步,游戏最重要图形就会显示出来)

procedure TForm1.mer(Sender: TObject);
begin
DRAW_BK;
DRAW_SNAKE;
DRAW_FOOD;
LABEL1.Caption:=FORMAT('SCORE = %D',[SCORE]);
end;

这个代表:绘制白色的背景,绘制蛇,绘制苹果,最后更新分数


第六步:绘制运态图形的子过程,如绘制蛇与苹果,代码如下:

PROCEDURE TFORM1.DRAW_SNAKE;
VAR AX,AY:INTEGER;
    BX,BY:INTEGER;
    I:INTEGER;
BEGIN
  AX:=SNAKE.PX*SCL-10;
  AY:=SNAKE.PY*SCL-10;
  BX:=SNAKE.PX*SCL+10;
  BY:=SNAKE.PY*SCL+10;
  IMAGE1.Canvas.Brush.Color:=CLRED;
  IMAGE1.Canvas.Rectangle(AX,AY,BX,BY);

这个代表:采用矩形绘制出蛇头,颜色为红色
  //
  FOR I:=1 TO NTAIL DO
  BEGIN
  AX:=TAIL[I].PX*SCL-10;
  AY:=TAIL[I].PY*SCL-10;
  BX:=TAIL[I].PX*SCL+10;
  BY:=TAIL[I].PY*SCL+10;
  IMAGE1.Canvas.Brush.Color:=CLYELLOW;
  IMAGE1.Canvas.Rectangle(AX,AY,BX,BY);
  END;
这个代表:采用矩形绘制出多段的蛇的身体,身体是黄色的,通过循环去画出数组
这个代表:采用矩形绘制出蛇头,颜色为红色这个代表:采用矩形绘制出蛇头,颜色为红色END;

PROCEDURE TFORM1.DRAW_FOOD;
VAR AX,AY:INTEGER;
    BX,BY:INTEGER;
BEGIN
  AX:=FOOD.PX*SCL-10;
  AY:=FOOD.PY*SCL-10;
  BX:=FOOD.PX*SCL+10;
  BY:=FOOD.PY*SCL+10;
  IMAGE1.Canvas.Brush.Color:=CLBLUE;
  IMAGE1.Canvas.Ellipse(AX,AY,BX,BY);
END;

这个代表:这个太简单了就是绘制苹果,一个圆形的蓝色的苹果。
这个代表:采用矩形绘制出多段的蛇的身体,身体是黄色的,通过循环去画出数组这个代表:采用矩形绘制出多段的蛇的身体,身体是黄色的,通过循环去画出数组


这是一个很简单的二维游戏,它总结了大部分简单的二维游戏的编制方法,可以拿来做入门的教材
这也是很多程序常用的东西 (除了游戏的玩法研究以外)
(1)绘制实时动态
(2)不断的判定主角(蛇头)与配角(苹果)的关系
(3)更新主角的情况(生死,分数,尾巴或装备)
(4)随机出现的敌人(本游戏是苹果)
等等(想到再补充)
 
以下是程序的游戏EXE文件,供大家学习使用。
点击下载此文件:snake的源代码与可执行程序EXE文件


查看更多...