Tomorrow - 地形生成(1)
2024-08-28 09:05:26
原理很简单,请不要喷。
效果展示
种子输入框
种子为12345的地形
种子为23456的地形
代码展示
globalvar map
random_set_seed(real(get_string("Seed: ","")))//获取种子
for(i=0;i<=room_width/32;i+=1)
{
for(j=0;j<=room_height/32;j+=1)
{
map[i,j]=0;//初始化数组
}
}
for(i=0;i<=room_width/32;i+=1)
{
for(j=0;j<=room_height/32;j+=1)
{
if(random_range(0,100)>=65) map[i,j]=1;//按概率填充房间
}
}
for(n=1;n<=room_height/32;n+=1)
{
for(i=0;i<=room_width/32;i+=1)
{
for(j=0;j<=room_height/32-1;j+=1)
{
if(map[i,j+1]==0&&map[i,j]==1)
{
map[i,j+1]=map[i,j];
map[i,j]=0;//方块重力处理
}
}
}
}
for(i=0;i<=room_width/32;i+=1)
{
for(j=0;j<=room_height/32;j+=1)
{
if(map[i,j]==1) instance_create(i*32,j*32,obj_block)//在房间中按地图创建物体
}
}
代码讲解
使用的坐标系
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... |
---|---|---|---|---|---|---|---|---|---|
2 | |||||||||
3 | |||||||||
4 | |||||||||
5 | |||||||||
6 | |||||||||
7 | |||||||||
8 | |||||||||
9 | |||||||||
... | ... |
随机数
random_set_seed()
:置随机数种子random_range
:生产随机数
方块重力处理
map[i,j]==1
是确保正在处理的位置有方块map[i,j+1]==0
是确保正在处理的位置下面一格没有方块
如果符合条件的话
map[i,j+1]=map[i,j]//清空当前格
map[i,j]=0;//填充下面格
(即当前方块下落)
注意一下,这里没有用map[i,j+1]=1
,让日后二次开发有更多方块。
放置方块
其实它的本质就是创建对象。
instance_create(x,y,obj)
的用法自己看F1.
结语
这是我做的第一个记录,希望我的沙盒游戏也能坚持做下去!
说明
本文原作者Tesla,首发于Tesla-173的个人博客。
Tesla本人转载至Gamemaker开发者之家。
未经授权禁止转载。
如需转载请联系2230229670@qq.com。
最新文章
- Android性能优化之App应用启动分析与优化
- x01.Tetris: 俄罗斯方块
- Bash 会清空从父进程继承来的 OLDPWD
- java实现二分查找
- Meet Python: little notes
- Android 之 2048 的游戏逻辑分析
- android 解析XML方式(一)
- centos6.4 安装erlang
- sql新感悟(where 1 = 1)
- 问题-delphi 程序在某电脑中显示???问号 乱码
- iOS开发——判断是否第一次启动
- win7+ ubuntu 双系统
- java对象拷贝和复制
- InnoDB的4个特性
- JS 关于 bind ,call,apply 和arguments p8
- Web设计中打开新页面或页面跳转的方法
- 软件工程-CMM与CMMI
- [转帖]Oracle字符集的查看与修改 --- 还未尝试 找个周六 试试.
- hdu 1847 博弈基础题 SG函数 或者规律2种方法
- UEditor前端配置项说明
热门文章
- ES6的Array.from()和Array.fill()方法
- springboot整合dubbo+zookeeper最新详细
- 树莓派3B+之Raspbian系统的安装
- 【原创】linux spinlock/rwlock/seqlock原理剖析(基于ARM64)
- Java多线程问题40个
- 线程状态以及sleep yield wait join方法
- vue3.0+axios 跨域+封装
- 移动端rem布局实现(vw)
- css指示箭头两种实现方法
- Spring如何解决循环依赖,你真的懂了?