先看实例,下面是 JM 大神 RPG 第一讲 的例程

再来从实际银行系统角度看,来认识一下实际 RPG 程序差别

http://www.jaymoseley.com/hercules/rpgtutor/rpg004.htm
VIEW       IBMUSER.SOURCE.PROGRAM(RPG00001) - 01.02                Columns 00001 00080
Command ===>                                                          Scroll ===> CSR
****** ********************************* Top of Data **********************************
000001 //RPG00001 JOB ,'RPG00001',CLASS=A,MSGLEVEL=(1,1),REGION=512K,
000002 //             NOTIFY=&SYSUID
000003 //PROCLIB  JCLLIB ORDER=SYSC.PROCLIB
000004 //* COMPILE LINK AND RUN RPG
000005 //RPGCLG   EXEC RPGECLG,COND.LKED=(9,LT,RPG)
000006 //STEPLIB  DD DSN=SYSC.LINKLIB,DISP=SHR
000007 //RPG.SYSUT3 DD UNIT=SYSDA
000008 //RPG.SYSUT2 DD UNIT=SYSDA
000009 //RPG.SYSUT1 DD UNIT=SYSDA
000010 //RPG.SYSGO DD  UNIT=SYSDA
000011 //RPG.SYSIN DD  *
000012      H
000013      H*
000014      H* READ ADDRESS CARDS AND PRINT ADDRESS LIST
000015      H*
000016      FINCARDS IPE F  80  80            READ40
000017      FOUTLIST O   F 132 132     OF    LPRINTER
000018      LOUTLIST 0010106012
000019      IINCARDS AA  01
000020      I                                        1  25 NAME
000021      I                                       26  50 ADDR1
000022      I                                       51  75 ADDR2
000023      OOUTLIST H  201   1P
000024      O       OR        OF
000025      O                         PAGE  Z   40
000026      O                                   36 'PAGE'
000027      O                                   23 'ADDRESS LIST'
000028      O                         UDATE      8 ' 0/  /  '
000029      O        D  1     01
000030      O                         NAME      30
000031      O        D  1     01
000032      O                         ADDR1     30
000033      O        D  2     01
000034      O                         ADDR2     30
000035      O        T 3   01 LR
000036      O                                   24 '*** END OF LIST ***'
000037 /*
000038 //GO.SYSUDUMP DD SYSOUT=A
000039 //GO.INCARDS  DD *
000040 MICHELLE COOK            9561 BAYVIEW STREET      BALDWIN, MO 63022
000041 PATTY JENNINGS           806 JACKSON STREET       VALPARAISO, IN 46383
000042 RICHARD SMITH            279 PARKER BLVD          NASHAU, NH 03060
000043 DUNCAN POWERS            9496 BAYVIEW STREET      BUFFALO, NY 14225
000044 WILLIAM EUBANKS          736 FETLOCK AVENUE       FALLS VILLAGE, CT 06031
- - -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   41 Line(s) not Displayed
000086 JACOB SCHAEFER           8278 LINDENWOOD AVENU    JUNEAU, AK 99801
000087 JARED HILLFORD           846 QUAIL AVENUE         PHOENIX, AZ 85040
000088 CLIFF PARKER             674 BRANDYWINE AVENUE    LAGO VISTA, TX 78645
000089 JOHN SCHAEFER            7210 PARSON COURT        LA HABRA, CA 90631
000090 /*
000091 //GO.OUTLIST  DD SYSOUT=A
000092 //*
****** ******************************** Bottom of Data ********************************

輸出

 9/05/21   ADDRESS LIST         PAGE   1MICHELLE COOK                      9561 BAYVIEW STREET                BALDWIN, MO 63022                  PATTY JENNINGS                     806 JACKSON STREET                 VALPARAISO, IN 46383               RICHARD SMITH                      279 PARKER BLVD                    NASHAU, NH 03060                   DUNCAN POWERS
...

首先,这个例程在干啥??

这个例程 读取一堆人名地址数据,每行一组,然后,输出为三行

这例程是一个集合编译连结和运行的 JOB

在主机里我们称这些 JCL 做 JOB,就像 Linux 的 .sh script 一样
JCL 就是 Job Control Language 工作控制语言
我们可以在主机里 Submit 这些 JOB 即提交给系统去执行
主机里面有个专门处理这些 JOB 的子系统或程序叫 JES Job Entry System 工作系统
JES 有不同版本,现在大多用 版本 JES2

把 JOB 写好了 Submit 提交给 JES2 它会把 JOB 里面的工作完成
然后,把结果输出到特定地方,我们去特定地方就可以找到相关输出或错误日志等等

这一步是呼叫 RPGECLG 来编译连接执行

000005 //RPGCLG   EXEC RPGECLG,COND.LKED=(9,LT,RPG)                                    

SYSC.PROCLIB 还有几个版本的 PROC 可以只编译不运,如下

VIEW              SYSC.PROCLIB                              Row 00067 of 00084
Command ===>                                                  Scroll ===> CSR Name     Prompt       Size   Created          Changed          ID
_________ RPGEC                    12  1980/11/12  1980/11/12 18:18:00  JAY03
_________ RPGECL                   22  1980/11/04  1980/11/12 18:18:00  JAY03
_________ RPGECLG                  24  1980/11/12  1980/11/12 18:18:00  JAY03
_________ RPGELG                   12  1980/11/12  1980/11/12 18:18:00  JAY03
_________ SBPASCAL                 15  1980/11/10  1980/11/12 18:18:00  JAY03 

这一步 SYSIN 是 定义 RPG 程序源代码,这个例程把源化码直接写在 JOB,实际工作时不这样做的

000011 //RPG.SYSIN DD  *
000012      H
000013      H*
000014      H* READ ADDRESS CARDS AND PRINT ADDRESS LIST
000015      H*
000016      FINCARDS IPE F  80  80            READ40
000017      FOUTLIST O   F 132 132     OF    LPRINTER
000018      LOUTLIST 0010106012
000019      IINCARDS AA  01
000020      I                                        1  25 NAME
000021      I                                       26  50 ADDR1
000022      I                                       51  75 ADDR2
- - -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   12 Line(s) not Displayed
000035      O        T 3   01 LR
000036      O                                   24 '*** END OF LIST ***'
000037 /*                                                                             

实际工作环境会把源码独立出来,例如放在 DAD001

000011 //RPG.SYSIN DD DISP=SHR,DSN=IBMUSER.SOURCE.PROGRAM(DAD001)

这一步是 INCARDS 是定义程序的输入数据,就像 Java 读一个外部文字档一样
这个例程也是直接写在 JOB 里,实际会放在独立档里 主机 把档叫 Dataset (Data set) 数据组

000038 //GO.SYSUDUMP DD SYSOUT=A
000039 //GO.INCARDS  DD *
000040 MICHELLE COOK            9561 BAYVIEW STREET      BALDWIN, MO 63022
000041 PATTY JENNINGS           806 JACKSON STREET       VALPARAISO, IN 46383
000042 RICHARD SMITH            279 PARKER BLVD          NASHAU, NH 03060
000043 DUNCAN POWERS            9496 BAYVIEW STREET      BUFFALO, NY 14225
000044 WILLIAM EUBANKS          736 FETLOCK AVENUE       FALLS VILLAGE, CT 06031
000045 SHIRLEY GARLAND          827 SHORE AVENUE         GREENVILLE, SC 29616
- - -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   41 Line(s) not Displayed
000087 JARED HILLFORD           846 QUAIL AVENUE         PHOENIX, AZ 85040
000088 CLIFF PARKER             674 BRANDYWINE AVENUE    LAGO VISTA, TX 78645
000089 JOHN SCHAEFER            7210 PARSON COURT        LA HABRA, CA 90631
000090 /*                                                                             

那先把 RPG 代码和输入档独立抽出来

代码 放到 IBMUSER.SOURCE.PROGRAM(DAD001)

VIEW       IBMUSER.SOURCE.PROGRAM(DAD001) - 01.00                  Columns 00001 00080
Command ===>                                                          Scroll ===> CSR
****** ********************************* Top of Data **********************************
000001      H
000002      H*
000003      H* READ ADDRESS CARDS AND PRINT ADDRESS LIST
000004      H*
000005      FINCARDS IPE F  80  80            READ40
000006      FOUTLIST O   F 132 132     OF    LPRINTER
000007      LOUTLIST 0010106012
000008      IINCARDS AA  01
000009      I                                        1  25 NAME
000010      I                                       26  50 ADDR1
000011      I                                       51  75 ADDR2
000012      OOUTLIST H  201   1P
000013      O       OR        OF
000014      O                         PAGE  Z   40
000015      O                                   36 'PAGE'
000016      O                                   23 'ADDRESS LIST'
000017      O                         UDATE      8 ' 0/  /  '
000018      O        D  1     01
000019      O                         NAME      30
000020      O        D  1     01
000021      O                         ADDR1     30
000022      O        D  2     01
000023      O                         ADDR2     30
000024      O        T 3   01 LR
000025      O                                   24 '*** END OF LIST ***'
****** ******************************** Bottom of Data ********************************

输入档 放到 Dataset IBMUSER.DAD.CUSTINFO

VIEW       IBMUSER.DAD.CUSTINFO                                    Columns 00001 00080
Command ===>                                                          Scroll ===> CSR
****** ********************************* Top of Data **********************************
000001 MICHELLE COOK            9561 BAYVIEW STREET      BALDWIN, MO 63022
000002 PATTY JENNINGS           806 JACKSON STREET       VALPARAISO, IN 46383
000003 RICHARD SMITH            279 PARKER BLVD          NASHAU, NH 03060
000004 DUNCAN POWERS            9496 BAYVIEW STREET      BUFFALO, NY 14225
000005 WILLIAM EUBANKS          736 FETLOCK AVENUE       FALLS VILLAGE, CT 06031
000006 SHIRLEY GARLAND          827 SHORE AVENUE         GREENVILLE, SC 29616
000007 JOAN FRANKLIN            4550 BIENVILLE CIRCLE    KANSAS CITY, MO 64118
000008 ANDREW BLUME             2942 BAYVIEW AVENUE      ROCHESTER, NY 03840
000009 ELIZABETH BOWERS         1023 SOUTHLAND STREET    RIVERSIDE, NJ 08370
000010 DIANE HAMMOND            3732 BENSON CIRCLE       FORT COLLINS, CO 80524
000011 LUCY ROSS                208 ALLEN PLACE          EVERETT, WA 98204
000012 LISA ELISON              488 WESTRIDGE STREET     SPARKS, NV 89431
000013 MATTHEW RIGHT            6267 BRIARGLEN PLACE     CLEVELAND, OH 44104
000014 ZELDA BARBER             442 COLISEUM STREET      ALBANY, NY 12206
000015 BRIAN HARMON             872 GRANT BLVD           WICHITA, KS 67208
000016 NATHAN MCKAY             1184 JUNIPER CIRCLE      HOUSTON, TX 77053
000017 LUCY JACOBY              144 MEADOW PLACE         SPARKS, NV 89431
000018 SCOTT PARRISH            9387 A & M CIRCLE        DES PLAINES, IL 60018
000019 CALVIN MULL              5924 TWILIGHT COURT      SPARKS, NV 89431
000020 CYBIL NOELKE             6782 BRIDGE CIRCLE       LAGO VISTA, TX 78645
000021 RUTH VANACKER            6021 BAYSHORE CIRCLE     NEWPORT BEACH, CA 92663
000022 JARED BROCKTON           761 GARRETT AVENUE       GREENVILLE, SC 29616
000023 MATTHEW JACKSON          4691 SHERWOOD STREET     LA JOLLA, CA 92037
000024 CALVIN POWERS            867 ALLEN STREET         SPRING, TX 77373
000025 SUE SMITH                9848 PLUM STREET         PALM DESERT, CA 92211
000026 ARNOLD WEAVER            701 TWILIGHT ROAD        KNOXVILLE, TN 37932
000027 KEVIN NORTON             5343 PARSON AVENUE       JUNEAU, AK 99801
000028 SCOTT RENFRO             5418 ATOLL ROAD          PASADENA, CA 91186
000029 ERNIE LABROIE            2913 BRANDYWINE CIRCL    SAN ANGELO, TX 76903
000030 SHARON JACKSON           2934 ROSA LINDA AVENU    NEW YORK, NY 10001
000031 PETER ALEXANDER          7444 ROBINHOOD ROAD      NEW YORK, NY 10001
000032 SHARON EUBANKS           9619 JUNIPER ROAD        SIOUX FALLS, SD 57112
000033 SHIRLEY ERICKSON         596 COLLEGE STREET       GRAND RAPIDS, MN 55745
000034 ANN STUART               9581 DESERT STREET       OKLAHOMA CITY, OK 73120
000035 SUE FONTAINE             2229 WESTRIDGE STREET    SAN ANTONIO, TX 78216
000036 KEVIN COOK               3055 ROSA LINDA STREE    DES PLAINES, IL 60018
000037 DIANE EUBANKS            4404 SOUTHLAND BLVD      PRESCOTT, AZ 86314
000038 BOB JEFFERSON            542 KINGS RIDGE BLVD     NEWPORT, RI 02840
000039 CRAIG LANDERS            6276 ELLIS STREET        ANN ARBOR, MI 48107
000040 NELSON HORTON            3066 SHERWOOD ROAD       NORWALK, CT 06854
000041 KEITH ERICKSON           227 BAYSHORE PLACE       GREENVILLE, KY 42345
000042 RICHARD GOODWIN          294 RIDGEWAY ROAD        OKLAHOMA CITY, OK 73120
000043 DANIEL ROBERTSON         379 ALTAVISTA CIRCLE     EVERETT, WA 98204
000044 JOAN AUSTIN              203 EASTHAVEN STREET     NEWPORT, RI 02840
000045 JARED MEEHAN             555 EDMUND CIRCLE        EVERETT, WA 98204
000046 CRAIG STONE              6791 GUADLAUPE COURT     WEST PALM BEACH, FL 33406
000047 JACOB SCHAEFER           8278 LINDENWOOD AVENU    JUNEAU, AK 99801
000048 JARED HILLFORD           846 QUAIL AVENUE         PHOENIX, AZ 85040
000049 CLIFF PARKER             674 BRANDYWINE AVENUE    LAGO VISTA, TX 78645
000050 JOHN SCHAEFER            7210 PARSON COURT        LA HABRA, CA 90631
****** ******************************** Bottom of Data ********************************

覆制一份 RPG00001 到 JCLLIB 为 RPGBLD01

  • IBMUSER.SOURCE.PROGRAM(RPG00001)
  • IBMUSER.ISPF.JCLLIB(RPGBLD01)
VIEW       IBMUSER.ISPF.JCLLIB(RPGBLD01) - 01.09                   Columns 00001 00080
Command ===>                                                          Scroll ===> CSR
****** ********************************* Top of Data **********************************
000001 //RPGBLD01 JOB ,'RPG BUILD',CLASS=C,MSGCLASS=S,MSGLEVEL=(1,1),
000002 //             REGION=4096K,TIME=1440,COND=((4,LT)),NOTIFY=&SYSUID
000003 // !!! PLS DOUBLE CHECK AND REMARK THIS LINE TO SUBMIT
000004 //PROCLIB  JCLLIB ORDER=SYSC.PROCLIB
000005 //* COMPILE LINK AND RUN RPG
000006 //RPGCLG   EXEC RPGECLG,COND.LKED=(9,LT,RPG)
000007 //STEPLIB  DD DSN=SYSC.LINKLIB,DISP=SHR
000008 //RPG.SYSPRINT  DD SYSOUT=*
000009 //RPG.SYSPUNCH  DD SYSOUT=*
000010 //LKED.SYSPRINT DD SYSOUT=*
000011 //RPG.SYSUT3 DD UNIT=SYSDA
000012 //RPG.SYSUT2 DD UNIT=SYSDA
000013 //RPG.SYSUT1 DD UNIT=SYSDA
000014 //RPG.SYSGO  DD UNIT=SYSDA
000015 //RPG.SYSIN  DD DISP=SHR,DSN=IBMUSER.SOURCE.PROGRAM(DAD001)
000016 //GO.SYSUDUMP DD SYSOUT=*
000017 //GO.INCARDS  DD DISP=SHR,DSN=IBMUSER.DAD.CUSTINFO
000018 //GO.OUTLIST  DD SYSOUT=*
000019 //*
****** ******************************** Bottom of Data ********************************

这样如果要编译其他 RPG 程序,只要改 SYSIN,INCARDS 和 OUTLIST 就可以

用时也修改了用的 CLASS,MSGCLASS
这个就像流水线,JES2 有不同的 CLASS 流水线
例如,某些流水线可以优先序高一点

可以在 SDSF 用 JC 查看

   Display  Filter  View  Print  Options  Help                                -----------------------------------------------------------------------------SDSF JOB CLASS DISPLAY ALL CLASSES                     LINE 1-38 (38)        COMMAND INPUT ===>                                            SCROLL ===> CSRPREFIX=**  DEST=(ALL)  OWNER=**  SYSNAME=                                    NP   CLASS    Status   Mode Wait-Cnt Xeq-Cnt  Hold-Cnt ODisp         QHld HolA        NOTHELD  JES                             (HOLD,HOLD)   NO   NO B        NOTHELD  JES                             (HOLD,HOLD)   NO   NO C        NOTHELD  JES                             (HOLD,HOLD)   NO   NO D        NOTHELD  JES                             (HOLD,HOLD)   NO   NO E        NOTHELD  JES                             (HOLD,HOLD)   NO   NO F        NOTHELD  JES                             (HOLD,HOLD)   NO   NO G        NOTHELD  JES                             (HOLD,HOLD)   NO   NO H        NOTHELD  JES                             (HOLD,HOLD)   NO   NO I        NOTHELD  JES                             (HOLD,HOLD)   NO   NO J        NOTHELD  JES                             (HOLD,HOLD)   NO   NO K        NOTHELD  JES                             (HOLD,HOLD)   NO   NO L        NOTHELD  JES                             (HOLD,HOLD)   NO   NO M        NOTHELD  JES                             (HOLD,HOLD)   NO   NO N        NOTHELD  JES                             (HOLD,HOLD)   NO   NO O        NOTHELD  JES                             (HOLD,HOLD)   NO   NO P        NOTHELD  JES                             (HOLD,HOLD)   NO   NO Q        NOTHELD  JES                             (HOLD,HOLD)   NO   NO R        NOTHELD  JES                             (HOLD,HOLD)   NO   NO S        NOTHELD  JES                             (HOLD,HOLD)   NO   NO STC                                   31          (PURGE,HOLD)          T        NOTHELD  JES                             (HOLD,HOLD)   NO   NO TSU                                    1          (PURGE,HOLD)          U        NOTHELD  JES                             (HOLD,HOLD)   NO   NO V        NOTHELD  JES                             (HOLD,HOLD)   NO   NO W        NOTHELD  JES                             (HOLD,HOLD)   NO   NO X        NOTHELD  JES                             (HOLD,HOLD)   NO   NO Y        NOTHELD  JES                             (HOLD,HOLD)   NO   NO Z        NOTHELD  JES                             (HOLD,HOLD)   NO   NO 0        NOTHELD  JES                             (HOLD,HOLD)   NO   NO 1        NOTHELD  JES                             (HOLD,HOLD)   NO   NO 2        NOTHELD  JES                             (HOLD,HOLD)   NO   NO 3        NOTHELD  JES                             (HOLD,HOLD)   NO   NO 4        NOTHELD  JES                             (HOLD,HOLD)   NO   NO 5        NOTHELD  JES                             (HOLD,HOLD)   NO   NO 6        NOTHELD  JES                             (HOLD,HOLD)   NO   NO 7        NOTHELD  JES                             (HOLD,HOLD)   NO   NO 8        NOTHELD  JES                             (HOLD,HOLD)   NO   NO 9        NOTHELD  JES                             (HOLD,HOLD)   NO   NO 

最后,来看看 RPG 长甚么样的

这里把 JM 大神的 例程 1 提取并改名为 DAD001
在主机里档名一般最大 8 位 SSMNNNNN

SS 通常用来代表这个程属于那个业务系统
例如: DA 存款系统 (Deposit),LN 按揭抵押系统 (Loans),TD 定期系统 (Time Deposit),IM 汇入系统 (Import),EX 汇出系统 (Export),FX 外汇系统 (Foreign Exchange) 等等

M 通常代表 Mode 模式
例如: M 每月才运行的程序,D 每日,Y 年,H 半年,W 周 等等

JOB 和 Dataset 名字也会采用相似命名方式

NNNNN 程序编号,001,00001,这样,一般只用代号

RPG 程序语言是非常接近汇编语言的

程序结构像写规范文档一样,例如下面 (Column 6 的字来标示)

  • H Header 档头规范
  • F File 档案规范
  • I Input 输入档格式规范
  • O Output 输出档格式规范

还有重点的

  • C Code 代码规范 (这个例程没用到代码,将来其他笔记再聊)
VIEW       IBMUSER.SOURCE.PROGRAM(DAD001) - 01.00                  Columns 00001 00080
Command ===>                                                          Scroll ===> CSR
=COLS> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
****** ********************************* Top of Data **********************************
000001      H
000002      H*
000003      H* READ ADDRESS CARDS AND PRINT ADDRESS LIST
000004      H*
000005      FINCARDS IPE F  80  80            READ40
000006      FOUTLIST O   F 132 132     OF    LPRINTER
000007      LOUTLIST 0010106012
000008      IINCARDS AA  01
000009      I                                        1  25 NAME
000010      I                                       26  50 ADDR1
000011      I                                       51  75 ADDR2
000012      OOUTLIST H  201   1P
000013      O       OR        OF
000014      O                         PAGE  Z   40
000015      O                                   36 'PAGE'
000016      O                                   23 'ADDRESS LIST'
000017      O                         UDATE      8 ' 0/  /  '
000018      O        D  1     01
000019      O                         NAME      30
000020      O        D  1     01
000021      O                         ADDR1     30
000022      O        D  2     01
000023      O                         ADDR2     30
000024      O        T 3   01 LR
000025      O                                   24 '*** END OF LIST ***'               

只要把规范填写好,编译后,程序就会按既定运行方式处理资料

这就是古老的 RPG 程序

RPG 学习 一 基本相关推荐

  1. RPG学习笔记三(PF文件导入,RPGLE文件导出)

    在运行时打入cmd命令,进入Dos状态下. >ftp >open IP(AS400的IP地址) >输入用户名 >输入密码 >quote type b 1 >put ...

  2. Git 和 GitHub 教程——版本控制入门

    大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  3. 学习在Unity中创建一个动作RPG游戏

    游戏开发变得简单.使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言. 了解Unity中2D发展的能力. 发展强大的和可移植的解决问题的技能. 了解 ...

  4. Unity完全学习教程-从初学者到C#中的RPG游戏开发

    打造3款游戏&学习Unity实用方式!从基础开始,以一个RPG游戏结束.使用Unity 2020和C# 你会学到: 通过创建酷游戏的实用方法 游戏开发的基础和核心概念 创建一个拥有大量功能的角 ...

  5. 学习RPG Maker MZ开发创建并发布PC和移动端游戏

    Complete RPG Maker MZ: Create and Publish for PC and Mobile 完整的RPG制造商MZ:为个人电脑和移动设备创建和发布 MP4 |视频:h264 ...

  6. Unity学习笔记3 简易2D横版RPG游戏制作(三)

    这一篇本来应该是在上一篇后面直接补进去的.不过因为排版的问题.所以我就另开一篇来整理了,好了,废话不多说,马上整理: 十八.关卡的锁定与解锁 前面我们已经解决了在游戏开始时可以选择关卡的问题,接下来我 ...

  7. Unity学习笔记2 简易2D横版RPG游戏制作(二)

    十二.敌人受攻击时的闪烁和Player的生命值的修正 上一篇中,我们利用Controller2D中的IEnumerator TakenDamage接口,使得我们的Player受到攻击时会进行闪烁,我们 ...

  8. RPG游戏Demo学习笔记一

    导航 RPG游戏Demo学习笔记一 UE笔记 -- 一个简单的AI_weixin_52918492的博客-CSDN博客 目录 一.准备资源 二.基础功能 生命值与能量值 创建Widget Bluepr ...

  9. Unity学习笔记1 简易2D横版RPG游戏制作(一)

    这个教程是参考一个YouTube上面的教程做的,原作者的教程做得比较简单,我先参考着做一遍,毕竟我也只是个初学者,还没办法完全自制哈哈.不过我之前也看过一个2D平台游戏的系列教程了,以后会整合起来,做 ...

最新文章

  1. 任务栏窗口和状态图标的闪动 z
  2. C语言解释器的实现--存储结构(一)
  3. 工作381-兼容移动端头部
  4. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第10篇]RSA和强RSA问题有什么区别
  5. C语言的参数传递原理解析(值传递)
  6. 儿子获奖发明和父亲研究所成果高度相似,还不止一个
  7. linux计划任务案例,Linux计划任务Crontab学习笔记(5):常见错误使用案例
  8. maven 安装后变成 mvn 不是内部命令解决方法
  9. 给机器人罗宾写一封英语回信_近10年高考英语书面表达真题及范文大汇总! 把握高考命题新趋势!...
  10. python中函数的参数传递
  11. SqlDataAdapter的增加,删除,修改
  12. MAC 用配置设置解决vscode中文乱码问题
  13. oc引导windows蓝屏_使用Opencore引导ubuntu以及Linux的步骤
  14. C语言将十进制输出二进制、八进制、十六进制的方法总结
  15. 二进制文件操作-存储与读取
  16. 桂电深信服CTF之MSC真假压缩包
  17. xlwt/xlrd库的区别
  18. 数据库学习笔记04——关系数据库2
  19. Python.习题五 列表与元组(下)
  20. 车用总线 | CAN XL最新技术的CiA官方解答

热门文章

  1. 登顶 GitHub 趋势榜,标星1.8k:200 行 JS 代码让画面人物瞬间消失!
  2. 国际顶级学界和工业界大咖云集、AIoT 实训营,你不可错过的嵌入式 AI 盛会!...
  3. 百度近五年最年轻高管团队出炉,能否“翻盘”成功?
  4. V 语言强势登顶 GitHub TOP1,欲取 Go 而代之?
  5. 为了完成月入三万的目标,我都做了哪些准备?
  6. GitHub 被微软收购后的 52 天,改版并放弃了 jQuery !
  7. 周鸿祎在人民日报撰文,呼吁推行网络安全大战略
  8. 网络编程之 创建多个子进程,避免踩坑。
  9. ios无痕埋点_掌握数据生命周期:初识数据埋点
  10. mesh threejs 属性_ThreeJS拖动案例解析