Tomorrow - 地形生成(1)
原理很简单,请不要喷。
效果展示
种子输入框
种子为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。
Tomorrow - 地形生成(1)的更多相关文章
- 【BZOJ3193】[JLOI2013]地形生成(动态规划)
[BZOJ3193][JLOI2013]地形生成(动态规划) 题面 BZOJ 洛谷 题解 第一问不难,首先按照山的高度从大往小排序,这样子只需要抉择前面有几座山就好了.然而有高度相同的山.其实也不麻烦 ...
- 【BZOJ3193】 [JLOI2013]地形生成
BZOJ3193 [JLOI2013]地形生成 Solution 第一问不是很简单吗? 直接计数就好了. 第二问思考无果看了看hyj神仙的代码,发现可以dp求解. 具体可以看代码(其实主要是我说不清楚 ...
- 【BZOJ3193】[JLOI2013]地形生成 DP
[BZOJ3193][JLOI2013]地形生成 Description 最近IK正在做关于地形建模的工作.其中一个工作阶段就是把一些山排列成一行.每座山都有各不相同的标号和高度.为了遵从一些设计上的 ...
- [Bzoj3193][JLOI2013]地形生成 (排列组合 + DP)
3193: [JLOI2013]地形生成 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 459 Solved: 223[Submit][Status ...
- [bzoj3193][JLOI2013]地形生成_排列组合_贪心
[JLOI2013]地形生成 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3193 题解: 这种求总排列的题,一种常规做法就是所有的元素 ...
- Day3:关于地形生成
---恢复内容开始--- 今天桃子好像还是没什么动静,不过媳妇倒是有一点见红~ 希望这是马上要出来的前兆了~ 桃子都已经晃点我俩好多回了~ 已经都快习惯来她这个狼来了的征兆了~ ----------- ...
- Minecraft类游戏地形生成机制
目录 前言 生成地形高度 生成生物群落 模拟雨水侵蚀.生成河流(未完) 生成洞穴.裂谷 生成植被 放置树木(Bezier曲线) 生成建筑 生成发展域(元胞自动机模型) 放置建筑(DFS) 连接道路(A ...
- 初试PyOpenGL二 (Python+OpenGL)基本地形生成与高度检测
在上文中,讲述了PyOpenGL的基本配置,以及网格,球形的生成,以及基本的漫游.现在利用上一篇的内容,来利用高程图实现一个基本的地形,并且,利用上文中的第三人称漫游,以小球为视角,来在地形上前后左右 ...
- [JLOI2013]地形生成
JLOI2013过了好长时间,才写第四题.. 第一问比较好想. 第二问我想到了n^3次方的做法,但是数据....于是没敢写,然后上网查了一下题解,居然是O(n^3)过的,数据这么弱... /* * P ...
随机推荐
- 将SublimeText加入右键菜单
将SublimeText加入右键菜单 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\SublimeText] @=&q ...
- spring最核心思想--ioc控制反转
一核心概念 控制反转:将bean的生成交给容器,程序可以从容器中获取指定的bean. 个人理解:此优势也是spring能够流行并成为java主流框架的主要原因,java是帮助java程序员以对象的方式 ...
- springboot创建
1.点击File----->New----->Project... 2.输入MAVEN,组名.包名等相关参数 3.选择SpringBoot版本,选择项目需要依赖的相关骨架包 4.设置 ...
- linux bash吧,还有啥Bourne Again Shell
linux bash吧,还有啥Bourne Again Shell bash吧,还有啥Bourne Again Shell 头部要写#!/bin/bash set -x #open script de ...
- 使用PyTorch建立图像分类模型
概述 在PyTorch中构建自己的卷积神经网络(CNN)的实践教程 我们将研究一个图像分类问题--CNN的一个经典和广泛使用的应用 我们将以实用的格式介绍深度学习概念 介绍 我被神经网络的力量和能力所 ...
- 干货 | Python进阶之学习笔记(一)
认识Python Python应用场景 Python基础语法 一.认识Python Python 是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell) ...
- 面试刷题27:程序员如何防护java界的新冠肺炎?
背景 安全是软件设计的第二个非功能性需求,一般是当软件出现安全问题的时候才会得到重视. 最明显的比如 数据库用户信息和密码泄漏等: 数据加解密技术 单向加密 md5+salt值, 这个是软件设计中使用 ...
- SpringBoot使用RedisTemplate操作Redis时,key值出现 \xac\xed\x00\x05t\x00\tb
原因分析 原因与RedisTemplate源码中的默认序列化方式有关 defaultSerializer = new JdkSerializationRedisSerializer( classLoa ...
- Java 对象容器
一.ArrayList 容器 1.记事本 package booknote; import java.util.ArrayList; public class NoteBook { private A ...
- 技术再深入一点又何妨?一脸懵B的聊Actor
记得上次深入 Resin 源码时,见到了Actor 字眼,当时主要从 Resin 中抽取关键架构,就屏蔽了 Actor 相关代码.未曾想这两天研究 flink 的运行架构以及源码,再次与 Actor ...