TheGuardian Posted August 17, 2011 Posted August 17, 2011 Hey, not new to the forum but I created an account so I could post this. I am a Minecraft player and I played Terraria for a little bit, I decided that I wanted to learn how to work with terrain generation. It also gives me something to do in my marketing class when I have nothing to do. This is a 2d land generator that can be customized. A Separate window allows you to change the variables used in the random generation code. The main window is resizable and the generation will fit it. I will start working on arrays as right now it doesn't remember where it generated land. You also may notice on the options GUI that the input boxes marked with an "X" don't work because I haven't done anything with them yet. I'm up for any tips ideas or even good random numbers to generate it with. I'm going to make it better over time. Heres the code [__CODE_PROTECTED]I2luY2x1ZGUgJmx0O0VkaXRDb25zdGFudHMuYXUzJmd0OzxiciAvPgojaW5jbHVkZSAmbHQ7R1VJQ29uc3RhbnRzRXguYXUzJmd0OzxiciAvPgojaW5jbHVkZSAmbHQ7U3RhdGljQ29uc3RhbnRzLmF1MyZndDs8YnIgLz4KI2luY2x1ZGUgJmx0O1dpbmRvd3NDb25zdGFudHMuYXUzJmd0OzxiciAvPgojaW5jbHVkZSAmbHQ7QnV0dG9uQ29uc3RhbnRzLmF1MyZndDs8YnIgLz4KI2luY2x1ZGUgJmx0O0dESVBsdXMuYXUzJmd0OzxiciAvPgo8YnIgLz4KcmVsb2Fkb3B0aW9ucygwKSA7TG9hZCB0aGUgb3B0aW9ucyBHVUk8YnIgLz4KPGJyIC8+CjxiciAvPgojUmVnaW9uICMjIyBTVEFSVCBLb2RhIEdVSSBzZWN0aW9uICMjIyBGb3JtPUM6JiMwOTI7VXNlcnMmIzA5MjtNYXR0JiMwOTI7UGljdHVyZXMmIzA5MjtHaW1wJiMwOTI7R1VJJiMwOTI7Rm9ybTEua3hmPGJyIC8+CiYjMDM2O0Zvcm0xID0gR1VJQ3JlYXRlKCZxdW90O0dlbmVyYXRlIExldmVsJnF1b3Q7LCAxMTAyLCA1MDIsIDE5NCwgMTM5LCBCaXRPUigmIzAzNjtXU19NSU5JTUlaRUJPWCwmIzAzNjtXU19TSVpFQk9YLCYjMDM2O1dTX1RISUNLRlJBTUUsJiMwMzY7V1NfU1lTTUVOVSwmIzAzNjtXU19DQVBUSU9OLCYjMDM2O1dTX1BPUFVQLCYjMDM2O1dTX1BPUFVQV0lORE9XLCYjMDM2O1dTX0dST1VQLCYjMDM2O1dTX0JPUkRFUiwmIzAzNjtXU19DTElQU0lCTElOR1MpKTxiciAvPgpHVUlTZXRCa0NvbG9yKDB4MDAwMDAwKTxiciAvPgomIzAzNjtidG5nZW5lcmF0ZSA9IEdVSUN0cmxDcmVhdGVCdXR0b24oJnF1b3Q7R2VuZXJhdGUmIzMzOyZxdW90OywgNDY0LCA0NzIsIDE3OSwgMjUsICYjMDM2O1dTX0dST1VQKTxiciAvPgpHVUlDdHJsU2V0UmVzaXppbmcoLTEsICYjMDM2O0dVSV9ET0NLQk9UVE9NKyYjMDM2O0dVSV9ET0NLSENFTlRFUismIzAzNjtHVUlfRE9DS1dJRFRIKyYjMDM2O0dVSV9ET0NLSEVJR0hUKTxiciAvPgomIzAzNjtzdGF0dXNsYmwgPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7R2VuZXJhdGluZyAwLzAmcXVvdDssIDY0OCwgNDcyLCAxNzIsIDE3KTxiciAvPgpHVUlDdHJsU2V0UmVzaXppbmcoLTEsICYjMDM2O0dVSV9ET0NLQk9UVE9NKyYjMDM2O0dVSV9ET0NLSENFTlRFUismIzAzNjtHVUlfRE9DS1dJRFRIKyYjMDM2O0dVSV9ET0NLSEVJR0hUKTxiciAvPgpHVUlDdHJsU2V0Q29sb3IoLTEsIDB4MDBGRjAwKTxiciAvPgpHVUlTZXRTdGF0ZShAU1dfU0hPVyk8YnIgLz4KI0VuZFJlZ2lvbiAjIyMgRU5EIEtvZGEgR1VJIHNlY3Rpb24gIyMjPGJyIC8+CjxiciAvPgo8YnIgLz4KPGJyIC8+CjxiciAvPgpfR0RJUGx1c19TdGFydHVwKCk8YnIgLz4KPGJyIC8+CiYjMDM2O2h3bmQgPSBfR0RJUGx1c19HcmFwaGljc0NyZWF0ZUZyb21IV05EKCYjMDM2O0Zvcm0xKTxiciAvPgo8YnIgLz4KV2hpbGUgMTxiciAvPgo8YnIgLz4KJiMwMzY7bk1zZyA9IEdVSUdldE1zZygpPGJyIC8+ClN3aXRjaCAmIzAzNjtuTXNnPGJyIC8+CglDYXNlICYjMDM2O0dVSV9FVkVOVF9DTE9TRTxiciAvPgoJCUV4aXQ8YnIgLz4KCUNhc2UgJiMwMzY7YnRuZ2VuZXJhdGU8YnIgLz4KCQlJZiBHVUlDdHJsUmVhZCgmIzAzNjtjaGVja3JhbmRvbSkgPSAmIzAzNjtHVUlfQ0hFQ0tFRCB0aGVuIHJhbmRvbWdlbm9wcygpPGJyIC8+CgkJR2VuZXJhdGVsYW5kKCk8YnIgLz4KCUNhc2UgJiMwMzY7YnRuZGVmYXVsdDxiciAvPgoJCXJlbG9hZG9wdGlvbnMoMSk8YnIgLz4KRW5kU3dpdGNoPGJyIC8+CjxiciAvPgo8YnIgLz4KV0VuZDxiciAvPgo8YnIgLz4KPGJyIC8+CjxiciAvPgpGdW5jIEdlbmVyYXRlbGFuZCgpPGJyIC8+CglfR0RJUGx1c19HcmFwaGljc0NsZWFyKCYjMDM2O2h3bmQpPGJyIC8+CgkmIzAzNjtod25kID0gX0dESVBsdXNfR3JhcGhpY3NDcmVhdGVGcm9tSFdORCgmIzAzNjtGb3JtMSk8YnIgLz4KPGJyIC8+CgkmIzAzNjtsaW5ld2lkdGggPSBHVUlDdHJsUmVhZCgmIzAzNjtpbmxpbmVzaXplKTxiciAvPgoJJiMwMzY7Z3JlZW5wZW4gPSBfR0RJUGx1c19QZW5DcmVhdGUoMHhGRjAwRkYwMCwmIzAzNjtsaW5ld2lkdGgpPGJyIC8+CgkmIzAzNjtncmV5cGVuID0gX0dESVBsdXNfUGVuQ3JlYXRlKDB4RkYyQjJCMkIsJiMwMzY7bGluZXdpZHRoKTxiciAvPgoJJiMwMzY7YnJvd25wZW4gPSBfR0RJUGx1c19QZW5DcmVhdGUoMHhGRjczM0QxQSwmIzAzNjtsaW5ld2lkdGgpPGJyIC8+CjxiciAvPgoJJiMwMzY7d2luc2l6ZSA9IFdpbkdldFBvcygmcXVvdDtHZW5lcmF0ZSBMZXZlbCZxdW90Oyk8YnIgLz4KPGJyIC8+CjxiciAvPgoJO1lBWSYjMzM7IGxldHMgZG8gc29tZSBtYXRoLi4uPGJyIC8+CjxiciAvPgoJJiMwMzY7eSA9IFJvdW5kKCgmIzAzNjt3aW5zaXplWzNdLTUwKS8yLDApIDtvZmZzZXQgZm9yIGJvdHRvbSwgZ2V0IG1pZGRsZTxiciAvPgoJJiMwMzY7eW9mZiA9IFJvdW5kKCgmIzAzNjt3aW5zaXplWzNdLTYwKS80LDApIDsgZ2V0IHRoZSBxdWFydGVyczxiciAvPgoJJiMwMzY7eSA9IFJhbmRvbSgmIzAzNjt5LSYjMDM2O3lvZmYsJiMwMzY7eSsmIzAzNjt5b2ZmLDEpIDt1c2UgdGhlIDIgaW50ZXJxdWFydGVyczxiciAvPgoJJiMwMzY7eCA9IFJvdW5kKCYjMDM2O2xpbmV3aWR0aC8yLDApPGJyIC8+CgkmIzAzNjtib3R0b20gPSAmIzAzNjt3aW5zaXplWzNdLTgwPGJyIC8+CgkmIzAzNjtib3R0b21saW1pdCA9IEdVSUN0cmxSZWFkKCYjMDM2O2luaG1pbik8YnIgLz4KCSYjMDM2O2NvdW50ZXIgPSAxPGJyIC8+CjxiciAvPgpEbzxiciAvPgoJR1VJQ3RybFNldERhdGEoJiMwMzY7c3RhdHVzbGJsLCZxdW90O0dlbmVyYXRpbmcgJnF1b3Q7JmFtcDsmIzAzNjtjb3VudGVyJmFtcDsmcXVvdDsvJnF1b3Q7JmFtcDtSb3VuZCgmIzAzNjt3aW5zaXplWzJdLyYjMDM2O2xpbmV3aWR0aCwwKSk8YnIgLz4KCSYjMDM2O3JhbiA9IFJhbmRvbShHVUlDdHJsUmVhZCgmIzAzNjtpbm1haW5yYW4xKSxHVUlDdHJsUmVhZCgmIzAzNjtpbm1haW5yYW4yKSwxKTxiciAvPgoJJiMwMzY7dG9vbG93ID0gMDxiciAvPgoJJiMwMzY7dG9vaCA9IDA8YnIgLz4KCUlmICYjMDM2O3Rvb2xvdyA9IDEgYW5kICYjMDM2O3kgJmx0Oz0gJiMwMzY7d2luc2l6ZVszXS0mIzAzNjt5b2ZmIFRoZW4gJiMwMzY7dG9vbG93ID0gMCAgO3RoaXMgaXMgdG8gYnJpbmcgbGV2ZWwgYmFjayB0byBub3JtYWwgZWxldmF0aW9uPGJyIC8+CglJZiAmIzAzNjt0b29oID0gMSBhbmQgJiMwMzY7eSAmZ3Q7PSAmIzAzNjt5b2ZmIFRoZW4gJiMwMzY7dG9vaCA9IDAgIDt0aGlzIGlzIHRvIGJyaW5nIGxldmVsIGJhY2sgdG8gbm9ybWFsIGVsZXZhdGlvbjxiciAvPgo8YnIgLz4KCTtHZW5lcmF0ZSBGbGF0PGJyIC8+CglJZiAmIzAzNjtyYW4gJmd0Oz0gR1VJQ3RybFJlYWQoJiMwMzY7aW5nZW5mbGF0MSkgQW5kICYjMDM2O3JhbiAmbHQ7PSBHVUlDdHJsUmVhZCgmIzAzNjtpbmdlbmZsYXQyKSBUaGVuPGJyIC8+CgkJX0dESVBsdXNfR3JhcGhpY3NEcmF3TGluZSgmIzAzNjtod25kLCYjMDM2O3gsJiMwMzY7Ym90dG9tLCYjMDM2O3gsJiMwMzY7eSArIFJvdW5kKCYjMDM2O2xpbmV3aWR0aC8yLDApLCYjMDM2O2dyZWVucGVuKTxiciAvPgoJCV9HRElQbHVzX0dyYXBoaWNzRHJhd0xpbmUoJiMwMzY7aHduZCwmIzAzNjt4LCYjMDM2O2JvdHRvbSwmIzAzNjt4LCYjMDM2O3kgKyBSb3VuZCgmIzAzNjtsaW5ld2lkdGgvMiwwKStHVUlDdHJsUmVhZCgmIzAzNjtpbmRpcnRsYXllciksJiMwMzY7YnJvd25wZW4pPGJyIC8+CjxiciAvPgoJRW5kSWY8YnIgLz4KCTtHZW5lcmF0ZSBFbGV2YXRlIFVwPGJyIC8+CglJZiAmIzAzNjtyYW4gJmd0Oz0gR1VJQ3RybFJlYWQoJiMwMzY7aW5nZW5lbHVwMSkgQW5kICYjMDM2O3JhbiAmbHQ7PSBHVUlDdHJsUmVhZCgmIzAzNjtpbmdlbmVsdXAyKSBUaGVuPGJyIC8+CjxiciAvPgo8YnIgLz4KCQlJZiAmIzAzNjt5IC0gR1VJQ3RybFJlYWQoJiMwMzY7aW5zdGVwaCkgJmx0Oz0gR1VJQ3RybFJlYWQoJiMwMzY7aW5obWF4KSBUaGVuICYjMDM2O3Rvb2ggPSAxO0xldHMgbm90IGdvIHRvbyBmYXIgdXAgeWVhPzxiciAvPgoJCTtpdHMgdG9vIGhpZ2ggbWFrZSBpdCBoYXZlIGxpdHRsZSBjaGFuY2Ugb2YgZ29pbmcgYmFjayB1cCB1bnRpbCBhIGNlcnRhaW4gZWxldmF0aW9uIGlzIG1ldDxiciAvPgoJCTt0aGlzIGdpdmVzIGl0IGEgc21hbGxlciBjaGFuY2UgdG8gZ28gYmFjayB1cCB1bnRpbCBpdHMgbG93IGVub3VnaDxiciAvPgoJCUlmICYjMDM2O3Rvb2ggPSAxIEFuZCBSYW5kb20oR1VJQ3RybFJlYWQoJiMwMzY7aW50b29odXBjaGFuY2UxKSxHVUlDdHJsUmVhZCgmIzAzNjtpbnRvb2h1cGNoYW5jZTIpLDEpID0gR1VJQ3RybFJlYWQoJiMwMzY7aW50b29odXBjaGFuY2UxKSBUaGVuICYjMDM2O3kgPSAmIzAzNjt5IC0gR1VJQ3RybFJlYWQoJiMwMzY7aW5zdGVwaCk8YnIgLz4KCQlJZiAmIzAzNjt0b29oID0gMCBUaGVuICYjMDM2O3kgPSAmIzAzNjt5IC0gR1VJQ3RybFJlYWQoJiMwMzY7aW5zdGVwaCk8YnIgLz4KPGJyIC8+CjxiciAvPgoJCV9HRElQbHVzX0dyYXBoaWNzRHJhd0xpbmUoJiMwMzY7aHduZCwmIzAzNjt4LCYjMDM2O2JvdHRvbSwmIzAzNjt4LCYjMDM2O3kgKyBSb3VuZCgmIzAzNjtsaW5ld2lkdGgvMiwwKSwmIzAzNjtncmVlbnBlbik8YnIgLz4KCQlfR0RJUGx1c19HcmFwaGljc0RyYXdMaW5lKCYjMDM2O2h3bmQsJiMwMzY7eCwmIzAzNjtib3R0b20sJiMwMzY7eCwmIzAzNjt5ICsgUm91bmQoJiMwMzY7bGluZXdpZHRoLzIsMCkrR1VJQ3RybFJlYWQoJiMwMzY7aW5kaXJ0bGF5ZXIpLCYjMDM2O2Jyb3ducGVuKTxiciAvPgo8YnIgLz4KCUVuZElmPGJyIC8+CglJZiAmIzAzNjtyYW4gJmd0Oz0gR1VJQ3RybFJlYWQoJiMwMzY7aW5nZW5lbGRuMSkgQW5kICYjMDM2O3JhbiAmbHQ7PSBHVUlDdHJsUmVhZCgmIzAzNjtpbmdlbmVsZG4yKSBUaGVuPGJyIC8+CjxiciAvPgoJCUlmICYjMDM2O3kgKyBHVUlDdHJsUmVhZCgmIzAzNjtpbnN0ZXBoKSAmZ3Q7PSAmIzAzNjtib3R0b20gLSAmIzAzNjtib3R0b21saW1pdCBUaGVuICYjMDM2O3Rvb2xvdyA9IDE7TGV0cyBub3QgZ28gdG9vIGZhciBkb3duIHllYT88YnIgLz4KCQk7aXRzIHRvbyBsb3cgbWFrZSBpdCBoYXZlIGxpdHRsZSBjaGFuY2Ugb2YgZ29pbmcgZG93biB1bnRpbCBhIGNlcnRhaW4gaGlnaHQgaXMgbWV0PGJyIC8+CgkJO3RoaXMgZ2l2ZXMgaXQgYSBzbWFsbGVyIGNoYW5jZSB0byBnbyBiYWNrIGRvd24gdW50aWwgaXRzIGhpZ2ggZW5vdWdoPGJyIC8+CgkJSWYgJiMwMzY7dG9vbG93ID0gMSBBbmQgUmFuZG9tKEdVSUN0cmxSZWFkKCYjMDM2O2ludG9vbG93ZG5jaGFuY2UxKSxHVUlDdHJsUmVhZCgmIzAzNjtpbnRvb2xvd2RuY2hhbmNlMSksMSkgPSBHVUlDdHJsUmVhZCgmIzAzNjtpbnRvb2xvd2RuY2hhbmNlMSkgVGhlbiAmIzAzNjt5ID0gJiMwMzY7eSArIEdVSUN0cmxSZWFkKCYjMDM2O2luc3RlcGgpPGJyIC8+CgkJSWYgJiMwMzY7dG9vbG93ID0gMCBUaGVuICYjMDM2O3kgPSAmIzAzNjt5ICsgR1VJQ3RybFJlYWQoJiMwMzY7aW5zdGVwaCk8YnIgLz4KPGJyIC8+CgkJX0dESVBsdXNfR3JhcGhpY3NEcmF3TGluZSgmIzAzNjtod25kLCYjMDM2O3gsJiMwMzY7Ym90dG9tLCYjMDM2O3gsJiMwMzY7eSArIFJvdW5kKCYjMDM2O2xpbmV3aWR0aC8yLDApLCYjMDM2O2dyZWVucGVuKTxiciAvPgoJCV9HRElQbHVzX0dyYXBoaWNzRHJhd0xpbmUoJiMwMzY7aHduZCwmIzAzNjt4LCYjMDM2O2JvdHRvbSwmIzAzNjt4LCYjMDM2O3kgKyBSb3VuZCgmIzAzNjtsaW5ld2lkdGgvMiwwKStHVUlDdHJsUmVhZCgmIzAzNjtpbmRpcnRsYXllciksJiMwMzY7YnJvd25wZW4pPGJyIC8+CjxiciAvPgo8YnIgLz4KCUVuZElmPGJyIC8+CjxiciAvPgoJJiMwMzY7Y291bnRlciA9ICYjMDM2O2NvdW50ZXIgKyAxPGJyIC8+CgkmIzAzNjt4ID0gJiMwMzY7eCArICYjMDM2O2xpbmV3aWR0aDxiciAvPgpVbnRpbCAmIzAzNjt4ICZndDs9ICYjMDM2O3dpbnNpemVbMl08YnIgLz4KCUdVSUN0cmxTZXREYXRhKCYjMDM2O3N0YXR1c2xibCwmcXVvdDtHZW5lcmF0ZWQmIzMzOyZxdW90Oyk8YnIgLz4KRW5kRnVuYzxiciAvPgo8YnIgLz4KPGJyIC8+CkZ1bmMgcmFuZG9tZ2Vub3BzKCk8YnIgLz4KCSYjMDM2O3JhbiA9IFJhbmRvbSgyLDUsMSk8YnIgLz4KCUdVSUN0cmxTZXREYXRhKCYjMDM2O2luZ2VuZWx1cDIsJiMwMzY7cmFuKTxiciAvPgoJR1VJQ3RybFNldERhdGEoJiMwMzY7aW5nZW5mbGF0MSwmIzAzNjtyYW4rMSk8YnIgLz4KCSYjMDM2O3JhbiA9IFJhbmRvbSgmIzAzNjtyYW4rMiwmIzAzNjtyYW4rNiwxKTxiciAvPgoJR1VJQ3RybFNldERhdGEoJiMwMzY7aW5nZW5mbGF0MiwmIzAzNjtyYW4pPGJyIC8+CglHVUlDdHJsU2V0RGF0YSgmIzAzNjtpbmdlbmVsZG4xLCYjMDM2O3JhbisxKTxiciAvPgo8YnIgLz4KCVJhbmRvbSg3LDExLDEpPGJyIC8+CkVuZEZ1bmM8YnIgLz4KPGJyIC8+CkZ1bmMgcmVsb2Fkb3B0aW9ucygmIzAzNjt4KTxiciAvPgoJSWYgJiMwMzY7eCA9IDEgVGhlbiBHVUlEZWxldGUoJiMwMzY7Rm9ybTIpPGJyIC8+CjxiciAvPgojUmVnaW9uICMjIyBTVEFSVCBLb2RhIEdVSSBzZWN0aW9uICMjIyBGb3JtPTxiciAvPgpHbG9iYWwgJiMwMzY7Rm9ybTIgPSBHVUlDcmVhdGUoJnF1b3Q7T3B0aW9ucyZxdW90OywgMzkxLCA0MTcsIDEwMCwgODApPGJyIC8+Ckdsb2JhbCAmIzAzNjtpbm1haW5yYW4xID0gR1VJQ3RybENyZWF0ZUlucHV0KCZxdW90OzEmcXVvdDssIDgwLCA4LCA0MSwgMjEsIEJpdE9SKCYjMDM2O0VTX0FVVE9IU0NST0xMLCYjMDM2O0VTX05VTUJFUikpPGJyIC8+CiYjMDM2O0xhYmVsMSA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtNYWluIFJhbmRvbSZxdW90OywgOCwgOCwgNzAsIDE3KTxiciAvPgomIzAzNjtMYWJlbDIgPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7LS0mcXVvdDssIDEyMCwgOCwgMTAsIDE3KTxiciAvPgpHbG9iYWwgJiMwMzY7aW5tYWlucmFuMiA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDsxMSZxdW90OywgMTI4LCA4LCA0MSwgMjEsIEJpdE9SKCYjMDM2O0VTX0FVVE9IU0NST0xMLCYjMDM2O0VTX05VTUJFUikpPGJyIC8+Ckdsb2JhbCAmIzAzNjtpbmdlbmZsYXQxID0gR1VJQ3RybENyZWF0ZUlucHV0KCZxdW90OzQmcXVvdDssIDgwLCA0MCwgNDEsIDIxLCBCaXRPUigmIzAzNjtFU19BVVRPSFNDUk9MTCwmIzAzNjtFU19OVU1CRVIpKTxiciAvPgomIzAzNjtMYWJlbDMgPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7R2VuIEZsYXQmcXVvdDssIDMyLCA0MCwgNDQsIDE3KTxiciAvPgomIzAzNjtMYWJlbDQgPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7LS0mcXVvdDssIDEyMCwgNDAsIDEwLCAxNyk8YnIgLz4KR2xvYmFsICYjMDM2O2luZ2VuZmxhdDIgPSBHVUlDdHJsQ3JlYXRlSW5wdXQoJnF1b3Q7OCZxdW90OywgMTI4LCA0MCwgNDEsIDIxLCBCaXRPUigmIzAzNjtFU19BVVRPSFNDUk9MTCwmIzAzNjtFU19OVU1CRVIpKTxiciAvPgpHbG9iYWwgJiMwMzY7aW5nZW5lbHVwMSA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDsxJnF1b3Q7LCA4MCwgNjQsIDQxLCAyMSwgQml0T1IoJiMwMzY7RVNfQVVUT0hTQ1JPTEwsJiMwMzY7RVNfTlVNQkVSKSk8YnIgLz4KJiMwMzY7TGFiZWw1ID0gR1VJQ3RybENyZWF0ZUxhYmVsKCZxdW90O0dlbiBFbGV2LiBVcCZxdW90OywgOCwgNjQsIDY4LCAxNyk8YnIgLz4KJiMwMzY7TGFiZWw2ID0gR1VJQ3RybENyZWF0ZUxhYmVsKCZxdW90Oy0tJnF1b3Q7LCAxMjAsIDY0LCAxMCwgMTcpPGJyIC8+Ckdsb2JhbCAmIzAzNjtpbmdlbmVsdXAyID0gR1VJQ3RybENyZWF0ZUlucHV0KCZxdW90OzMmcXVvdDssIDEyOCwgNjQsIDQxLCAyMSwgQml0T1IoJiMwMzY7RVNfQVVUT0hTQ1JPTEwsJiMwMzY7RVNfTlVNQkVSKSk8YnIgLz4KR2xvYmFsICYjMDM2O2luZ2VuZWxkbjEgPSBHVUlDdHJsQ3JlYXRlSW5wdXQoJnF1b3Q7OSZxdW90OywgODAsIDg4LCA0MSwgMjEsIEJpdE9SKCYjMDM2O0VTX0FVVE9IU0NST0xMLCYjMDM2O0VTX05VTUJFUikpPGJyIC8+CiYjMDM2O0xhYmVsNyA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtHZW4gRWxldi4gRG4mcXVvdDssIDgsIDg4LCA2OCwgMTcpPGJyIC8+CiYjMDM2O0xhYmVsOCA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDstLSZxdW90OywgMTIwLCA4OCwgMTAsIDE3KTxiciAvPgpHbG9iYWwgJiMwMzY7aW5nZW5lbGRuMiA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDsxMSZxdW90OywgMTI4LCA4OCwgNDEsIDIxLCBCaXRPUigmIzAzNjtFU19BVVRPSFNDUk9MTCwmIzAzNjtFU19OVU1CRVIpKTxiciAvPgpHbG9iYWwgJiMwMzY7aW5nZW5oaWxsMSA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDtYJnF1b3Q7LCA4MCwgMTEyLCA0MSwgMjEsIEJpdE9SKCYjMDM2O0VTX0FVVE9IU0NST0xMLCYjMDM2O0VTX05VTUJFUikpPGJyIC8+CiYjMDM2O0xhYmVsOSA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtHZW4gSGlsbCZxdW90OywgMzIsIDExMiwgNDEsIDE3KTxiciAvPgomIzAzNjtMYWJlbDEwID0gR1VJQ3RybENyZWF0ZUxhYmVsKCZxdW90Oy0tJnF1b3Q7LCAxMjAsIDExMiwgMTAsIDE3KTxiciAvPgpHbG9iYWwgJiMwMzY7aW5nZW5oaWxsMiA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDtYJnF1b3Q7LCAxMjgsIDExMiwgNDEsIDIxLCBCaXRPUigmIzAzNjtFU19BVVRPSFNDUk9MTCwmIzAzNjtFU19OVU1CRVIpKTxiciAvPgpHbG9iYWwgJiMwMzY7aW5nZW5kaXAxID0gR1VJQ3RybENyZWF0ZUlucHV0KCZxdW90O1gmcXVvdDssIDgwLCAxMzYsIDQxLCAyMSwgQml0T1IoJiMwMzY7RVNfQVVUT0hTQ1JPTEwsJiMwMzY7RVNfTlVNQkVSKSk8YnIgLz4KJiMwMzY7TGFiZWwxMSA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtHZW4gRGlwJnF1b3Q7LCAzMiwgMTM2LCA0MywgMTcpPGJyIC8+CiYjMDM2O0xhYmVsMTIgPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7LS0mcXVvdDssIDEyMCwgMTM2LCAxMCwgMTcpPGJyIC8+Ckdsb2JhbCAmIzAzNjtpbmdlbmRpcDIgPSBHVUlDdHJsQ3JlYXRlSW5wdXQoJnF1b3Q7WCZxdW90OywgMTI4LCAxMzYsIDQxLCAyMSwgQml0T1IoJiMwMzY7RVNfQVVUT0hTQ1JPTEwsJiMwMzY7RVNfTlVNQkVSKSk8YnIgLz4KJiMwMzY7TGFiZWwxMyA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtIZWlnaHQgTWluLiZxdW90OywgMTYsIDE4NCwgNTksIDE3KTxiciAvPgpHbG9iYWwgJiMwMzY7aW5obWluID0gR1VJQ3RybENyZWF0ZUlucHV0KCZxdW90OzEwJnF1b3Q7LCA4MCwgMTg0LCA0MSwgMjEsIEJpdE9SKCYjMDM2O0VTX0FVVE9IU0NST0xMLCYjMDM2O0VTX05VTUJFUikpPGJyIC8+CkdVSUN0cmxTZXRUaXAoLTEsICZxdW90O1RoaXMgaXMgcGl4ZWxzIGZyb20gYm90dG9tIG9mIGRyYXdpbmcgYXJlYSZxdW90Oyk8YnIgLz4KJiMwMzY7TGFiZWwxNCA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtMaW5lIFNpemUmcXVvdDssIDI0LCAyMzIsIDQ3LCAxNyk8YnIgLz4KR2xvYmFsICYjMDM2O2lubGluZXNpemUgPSBHVUlDdHJsQ3JlYXRlSW5wdXQoJnF1b3Q7NCZxdW90OywgODAsIDIzMiwgNDEsIDIxLCBCaXRPUigmIzAzNjtFU19BVVRPSFNDUk9MTCwmIzAzNjtFU19OVU1CRVIpKTxiciAvPgpHbG9iYWwgJiMwMzY7aW5oaWxsc3RvcCA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDtYJnF1b3Q7LCAyODgsIDQwLCA0MSwgMjEsIEJpdE9SKCYjMDM2O0VTX0FVVE9IU0NST0xMLCYjMDM2O0VTX05VTUJFUikpPGJyIC8+CiYjMDM2O0xhYmVsMTUgPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7SGlsbCBTdG9wIENoYW5jZSZxdW90OywgMjAwLCA0MCwgODQsIDE3KTxiciAvPgpHbG9iYWwgJiMwMzY7aW5yYW5kMSA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDsxJnF1b3Q7LCAyODgsIDE2LCA0MSwgMjEsIEJpdE9SKCYjMDM2O0VTX0FVVE9IU0NST0xMLCYjMDM2O0VTX05VTUJFUikpPGJyIC8+CiYjMDM2O0xhYmVsMTYgPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7UmFuZG9tJnF1b3Q7LCAyNDAsIDE2LCA0NiwgMTcpPGJyIC8+CiYjMDM2O0xhYmVsMTcgPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7LS0mcXVvdDssIDMyOCwgMTYsIDEwLCAxNyk8YnIgLz4KR2xvYmFsICYjMDM2O2lucmFuZDIgPSBHVUlDdHJsQ3JlYXRlSW5wdXQoJnF1b3Q7OSZxdW90OywgMzM2LCAxNiwgNDEsIDIxLCBCaXRPUigmIzAzNjtFU19BVVRPSFNDUk9MTCwmIzAzNjtFU19OVU1CRVIpKTxiciAvPgpHbG9iYWwgJiMwMzY7aW5kaXBzdG9wID0gR1VJQ3RybENyZWF0ZUlucHV0KCZxdW90O1gmcXVvdDssIDI4OCwgNjQsIDQxLCAyMSwgQml0T1IoJiMwMzY7RVNfQVVUT0hTQ1JPTEwsJiMwMzY7RVNfTlVNQkVSKSk8YnIgLz4KJiMwMzY7TGFiZWwxOCA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtEaXAgU3RvcCBDaGFuY2UmcXVvdDssIDIwMCwgNjQsIDg0LCAxNyk8YnIgLz4KR2xvYmFsICYjMDM2O21heGhpbGxoID0gR1VJQ3RybENyZWF0ZUlucHV0KCZxdW90O1gmcXVvdDssIDI4OCwgMTA0LCA0MSwgMjEsIEJpdE9SKCYjMDM2O0VTX0FVVE9IU0NST0xMLCYjMDM2O0VTX05VTUJFUikpPGJyIC8+CiYjMDM2O0xhYmVsMTkgPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7TWF4IEhpbGwgSGVpZ2h0JnF1b3Q7LCAyMDgsIDEwNCwgNzYsIDE3KTxiciAvPgpHbG9iYWwgJiMwMzY7bWF4aGlsbHcgPSBHVUlDdHJsQ3JlYXRlSW5wdXQoJnF1b3Q7WCZxdW90OywgMjg4LCAxMjgsIDQxLCAyMSwgQml0T1IoJiMwMzY7RVNfQVVUT0hTQ1JPTEwsJiMwMzY7RVNfTlVNQkVSKSk8YnIgLz4KJiMwMzY7TGFiZWwyMCA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtNYXggSGlsbCBXaWR0aCZxdW90OywgMjA4LCAxMjgsIDc2LCAxNyk8YnIgLz4KR2xvYmFsICYjMDM2O21heGRpcGggPSBHVUlDdHJsQ3JlYXRlSW5wdXQoJnF1b3Q7WCZxdW90OywgMjg4LCAxNTIsIDQxLCAyMSwgQml0T1IoJiMwMzY7RVNfQVVUT0hTQ1JPTEwsJiMwMzY7RVNfTlVNQkVSKSk8YnIgLz4KJiMwMzY7TGFiZWwyMSA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtNYXggRGlwIEhlaWdodCZxdW90OywgMjA4LCAxNTIsIDc2LCAxNyk8YnIgLz4KR2xvYmFsICYjMDM2O21heGRpcHcgPSBHVUlDdHJsQ3JlYXRlSW5wdXQoJnF1b3Q7WCZxdW90OywgMjg4LCAxNzYsIDQxLCAyMSwgQml0T1IoJiMwMzY7RVNfQVVUT0hTQ1JPTEwsJiMwMzY7RVNfTlVNQkVSKSk8YnIgLz4KJiMwMzY7TGFiZWwyMiA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtNYXggRGlwIFdpZHRoJnF1b3Q7LCAyMDgsIDE3NiwgNzYsIDE3KTxiciAvPgomIzAzNjtMYWJlbDIzID0gR1VJQ3RybENyZWF0ZUxhYmVsKCZxdW90O1N0ZXAgU2l6ZSZxdW90OywgMjQsIDI1NiwgNDksIDE3KTxiciAvPgpHbG9iYWwgJiMwMzY7aW5zdGVwaCA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDs0JnF1b3Q7LCA4MCwgMjU2LCA0MSwgMjEsIEJpdE9SKCYjMDM2O0VTX0FVVE9IU0NST0xMLCYjMDM2O0VTX05VTUJFUikpPGJyIC8+Ckdsb2JhbCAmIzAzNjtpbmRpcnRsYXllciA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDs0JnF1b3Q7LCAyNDAsIDIxNiwgNDEsIDIxLCBCaXRPUigmIzAzNjtFU19BVVRPSFNDUk9MTCwmIzAzNjtFU19OVU1CRVIpKTxiciAvPgomIzAzNjtMYWJlbDI0ID0gR1VJQ3RybENyZWF0ZUxhYmVsKCZxdW90O0RpcnQgT2Zmc2V0JnF1b3Q7LCAxODgsIDIxNiwgNDksIDE3KTxiciAvPgpHbG9iYWwgJiMwMzY7aW5yb2NrbGF5ZXIxID0gR1VJQ3RybENyZWF0ZUlucHV0KCZxdW90O1gmcXVvdDssIDI0MCwgMjQwLCA0MSwgMjEsIEJpdE9SKCYjMDM2O0VTX0FVVE9IU0NST0xMLCYjMDM2O0VTX05VTUJFUikpPGJyIC8+CiYjMDM2O0xhYmVsMjYgPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7Um9jayBMYXllciZxdW90OywgMTc2LCAyNDAsIDYyLCAxNyk8YnIgLz4KJiMwMzY7TGFiZWwyNyA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDstLSZxdW90OywgMjgwLCAyNDAsIDEwLCAxNyk8YnIgLz4KR2xvYmFsICYjMDM2O2lucm9ja2xheWVyMiA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDtYJnF1b3Q7LCAyODgsIDI0MCwgNDEsIDIxLCBCaXRPUigmIzAzNjtFU19BVVRPSFNDUk9MTCwmIzAzNjtFU19OVU1CRVIpKTxiciAvPgpHbG9iYWwgJiMwMzY7aW50b29sb3dkbmNoYW5jZTEgPSBHVUlDdHJsQ3JlYXRlSW5wdXQoJnF1b3Q7MSZxdW90OywgMTYwLCAyOTYsIDI1LCAyMSwgQml0T1IoJiMwMzY7RVNfQVVUT0hTQ1JPTEwsJiMwMzY7RVNfTlVNQkVSKSk8YnIgLz4KJiMwMzY7TGFiZWwyNSA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtFbGV2LiBEbiBjaGFuY2UgaWYgdG9vbG93ID0xJnF1b3Q7LCA4LCAyOTgsIDE0OCwgMTcpPGJyIC8+CiYjMDM2O0xhYmVsMjggPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7b2YmcXVvdDssIDE5MiwgMjk4LCAxMywgMTcpPGJyIC8+Ckdsb2JhbCAmIzAzNjtpbnRvb2xvd2RuY2hhbmNlMiA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDs1JnF1b3Q7LCAyMDgsIDI5NiwgMjUsIDIxLCBCaXRPUigmIzAzNjtFU19BVVRPSFNDUk9MTCwmIzAzNjtFU19OVU1CRVIpKTxiciAvPgpHbG9iYWwgJiMwMzY7aW50b29odXBjaGFuY2UxID0gR1VJQ3RybENyZWF0ZUlucHV0KCZxdW90OzEmcXVvdDssIDE2MCwgMzIwLCAyNSwgMjEsIEJpdE9SKCYjMDM2O0VTX0FVVE9IU0NST0xMLCYjMDM2O0VTX05VTUJFUikpPGJyIC8+CiYjMDM2O0xhYmVsMjkgPSBHVUlDdHJsQ3JlYXRlTGFiZWwoJnF1b3Q7RWxldi4gVXAgY2hhbmNlIGlmIHRvb2ggPTEmcXVvdDssIDgsIDMyMiwgMTQ3LCAxNyk8YnIgLz4KJiMwMzY7TGFiZWwzMCA9IEdVSUN0cmxDcmVhdGVMYWJlbCgmcXVvdDtvZiZxdW90OywgMTkyLCAzMjIsIDEzLCAxNyk8YnIgLz4KR2xvYmFsICYjMDM2O2ludG9vaHVwY2hhbmNlMiA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDs1JnF1b3Q7LCAyMDgsIDMyMCwgMjUsIDIxLCBCaXRPUigmIzAzNjtFU19BVVRPSFNDUk9MTCwmIzAzNjtFU19OVU1CRVIpKTxiciAvPgomIzAzNjtMYWJlbDMxID0gR1VJQ3RybENyZWF0ZUxhYmVsKCZxdW90O0hlaWdodCBNYXgmcXVvdDssIDE2LCAyMDgsIDU4LCAxNyk8YnIgLz4KR2xvYmFsICYjMDM2O2luaG1heCA9IEdVSUN0cmxDcmVhdGVJbnB1dCgmcXVvdDsyMCZxdW90OywgODAsIDIwOCwgNDEsIDIxLCBCaXRPUigmIzAzNjtFU19BVVRPSFNDUk9MTCwmIzAzNjtFU19OVU1CRVIpKTxiciAvPgpHVUlDdHJsU2V0VGlwKC0xLCAmcXVvdDtUaGlzIGlzIHBpeGVscyBmcm9tIHRoZSB0b3Agb2YgdGhlIGRyYXdpbmcgYXJlYSZxdW90Oyk8YnIgLz4KR2xvYmFsICYjMDM2O2NoZWNrcmFuZG9tID0gR1VJQ3RybENyZWF0ZUNoZWNrYm94KCZxdW90O1JhbmRvbWl6ZSBHZW4uICMmcXVvdDssIDMyLCAxNjAsIDExMywgMTcpPGJyIC8+Ckdsb2JhbCAmIzAzNjtidG5kZWZhdWx0ID0gR1VJQ3RybENyZWF0ZUJ1dHRvbigmcXVvdDtEZWZhdWx0IFZhbHVlcyZxdW90OywgMjgwLCAzMTIsIDk5LCAyNSwgJiMwMzY7V1NfR1JPVVApPGJyIC8+CkdVSVNldFN0YXRlKEBTV19TSE9XKTxiciAvPgojRW5kUmVnaW9uICMjIyBFTkQgS29kYSBHVUkgc2VjdGlvbiAjIyM8YnIgLz4KPGJyIC8+CkVuZEZ1bmM=[/__CODE_PROTECTED] A few tips about it. You can check the Random Gen # to make the terrain even more random. The Generation works by Randomizing a number between 1-11 then from that it decides what to do using that which can be customized on the options. Thanks, Sorry if I missed anything important this is my first post. I would attach a compiled version but Autoit forum is limiting my max upload size. Last updated on: 8-17generate.au3
TheGuardian Posted August 18, 2011 Author Posted August 18, 2011 I don't seem to be able to edit my original post sorry about the double post, the autoit code above had html tags stuck into it. expandcollapse popup#include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <GDIPlus.au3> reloadoptions(0) ;Load the options GUI #Region ### START Koda GUI section ### Form=C:\Users\Matt\Pictures\Gimp\GUI\Form1.kxf $Form1 = GUICreate("Generate Level", 1102, 502, 194, 139, BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS)) GUISetBkColor(0x000000) $btngenerate = GUICtrlCreateButton("Generate!", 464, 472, 179, 25, $WS_GROUP) GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) $statuslbl = GUICtrlCreateLabel("Generating 0/0", 648, 472, 172, 17) GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) GUICtrlSetColor(-1, 0x00FF00) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### _GDIPlus_Startup() $hwnd = _GDIPlus_GraphicsCreateFromHWND($Form1) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $btngenerate If GUICtrlRead($checkrandom) = $GUI_CHECKED then randomgenops() Generateland() Case $btndefault reloadoptions(1) EndSwitch WEnd Func Generateland() _GDIPlus_GraphicsClear($hwnd) $hwnd = _GDIPlus_GraphicsCreateFromHWND($Form1) $linewidth = GUICtrlRead($inlinesize) $greenpen = _GDIPlus_PenCreate(0xFF00FF00,$linewidth) $greypen = _GDIPlus_PenCreate(0xFF2B2B2B,$linewidth) $brownpen = _GDIPlus_PenCreate(0xFF733D1A,$linewidth) $winsize = WinGetPos("Generate Level") ;YAY! lets do some math... $y = Round(($winsize[3]-50)/2,0) ;offset for bottom, get middle $yoff = Round(($winsize[3]-60)/4,0) ; get the quarters $y = Random($y-$yoff,$y+$yoff,1) ;use the 2 interquarters $x = Round($linewidth/2,0) $bottom = $winsize[3]-80 $bottomlimit = GUICtrlRead($inhmin) $counter = 1 Do GUICtrlSetData($statuslbl,"Generating "&$counter&"/"&Round($winsize[2]/$linewidth,0)) $ran = Random(GUICtrlRead($inmainran1),GUICtrlRead($inmainran2),1) $toolow = 0 $tooh = 0 If $toolow = 1 and $y <= $winsize[3]-$yoff Then $toolow = 0 ;this is to bring level back to normal elevation If $tooh = 1 and $y >= $yoff Then $tooh = 0 ;this is to bring level back to normal elevation ;Generate Flat If $ran >= GUICtrlRead($ingenflat1) And $ran <= GUICtrlRead($ingenflat2) Then _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0),$greenpen) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0)+GUICtrlRead($indirtlayer),$brownpen) EndIf ;Generate Elevate Up If $ran >= GUICtrlRead($ingenelup1) And $ran <= GUICtrlRead($ingenelup2) Then If $y - GUICtrlRead($insteph) <= GUICtrlRead($inhmax) Then $tooh = 1;Lets not go too far up yea? ;its too high make it have little chance of going back up until a certain elevation is met ;this gives it a smaller chance to go back up until its low enough If $tooh = 1 And Random(GUICtrlRead($intoohupchance1),GUICtrlRead($intoohupchance2),1) = GUICtrlRead($intoohupchance1) Then $y = $y - GUICtrlRead($insteph) If $tooh = 0 Then $y = $y - GUICtrlRead($insteph) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0),$greenpen) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0)+GUICtrlRead($indirtlayer),$brownpen) EndIf If $ran >= GUICtrlRead($ingeneldn1) And $ran <= GUICtrlRead($ingeneldn2) Then If $y + GUICtrlRead($insteph) >= $bottom - $bottomlimit Then $toolow = 1;Lets not go too far down yea? ;its too low make it have little chance of going down until a certain hight is met ;this gives it a smaller chance to go back down until its high enough If $toolow = 1 And Random(GUICtrlRead($intoolowdnchance1),GUICtrlRead($intoolowdnchance1),1) = GUICtrlRead($intoolowdnchance1) Then $y = $y + GUICtrlRead($insteph) If $toolow = 0 Then $y = $y + GUICtrlRead($insteph) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0),$greenpen) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0)+GUICtrlRead($indirtlayer),$brownpen) EndIf $counter = $counter + 1 $x = $x + $linewidth Until $x >= $winsize[2] GUICtrlSetData($statuslbl,"Generated!") EndFunc Func randomgenops() $ran = Random(2,5,1) GUICtrlSetData($ingenelup2,$ran) GUICtrlSetData($ingenflat1,$ran+1) $ran = Random($ran+2,$ran+6,1) GUICtrlSetData($ingenflat2,$ran) GUICtrlSetData($ingeneldn1,$ran+1) Random(7,11,1) EndFunc Func reloadoptions($x) If $x = 1 Then GUIDelete($Form2) #Region ### START Koda GUI section ### Form= Global $Form2 = GUICreate("Options", 391, 417, 100, 80) Global $inmainran1 = GUICtrlCreateInput("1", 80, 8, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label1 = GUICtrlCreateLabel("Main Random", 8, 8, 70, 17) $Label2 = GUICtrlCreateLabel("--", 120, 8, 10, 17) Global $inmainran2 = GUICtrlCreateInput("11", 128, 8, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) Global $ingenflat1 = GUICtrlCreateInput("4", 80, 40, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label3 = GUICtrlCreateLabel("Gen Flat", 32, 40, 44, 17) $Label4 = GUICtrlCreateLabel("--", 120, 40, 10, 17) Global $ingenflat2 = GUICtrlCreateInput("8", 128, 40, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) Global $ingenelup1 = GUICtrlCreateInput("1", 80, 64, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label5 = GUICtrlCreateLabel("Gen Elev. Up", 8, 64, 68, 17) $Label6 = GUICtrlCreateLabel("--", 120, 64, 10, 17) Global $ingenelup2 = GUICtrlCreateInput("3", 128, 64, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) Global $ingeneldn1 = GUICtrlCreateInput("9", 80, 88, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label7 = GUICtrlCreateLabel("Gen Elev. Dn", 8, 88, 68, 17) $Label8 = GUICtrlCreateLabel("--", 120, 88, 10, 17) Global $ingeneldn2 = GUICtrlCreateInput("11", 128, 88, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) Global $ingenhill1 = GUICtrlCreateInput("X", 80, 112, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label9 = GUICtrlCreateLabel("Gen Hill", 32, 112, 41, 17) $Label10 = GUICtrlCreateLabel("--", 120, 112, 10, 17) Global $ingenhill2 = GUICtrlCreateInput("X", 128, 112, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) Global $ingendip1 = GUICtrlCreateInput("X", 80, 136, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label11 = GUICtrlCreateLabel("Gen Dip", 32, 136, 43, 17) $Label12 = GUICtrlCreateLabel("--", 120, 136, 10, 17) Global $ingendip2 = GUICtrlCreateInput("X", 128, 136, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label13 = GUICtrlCreateLabel("Height Min.", 16, 184, 59, 17) Global $inhmin = GUICtrlCreateInput("10", 80, 184, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) GUICtrlSetTip(-1, "This is pixels from bottom of drawing area") $Label14 = GUICtrlCreateLabel("Line Size", 24, 232, 47, 17) Global $inlinesize = GUICtrlCreateInput("4", 80, 232, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) Global $inhillstop = GUICtrlCreateInput("X", 288, 40, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label15 = GUICtrlCreateLabel("Hill Stop Chance", 200, 40, 84, 17) Global $inrand1 = GUICtrlCreateInput("1", 288, 16, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label16 = GUICtrlCreateLabel("Random", 240, 16, 46, 17) $Label17 = GUICtrlCreateLabel("--", 328, 16, 10, 17) Global $inrand2 = GUICtrlCreateInput("9", 336, 16, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) Global $indipstop = GUICtrlCreateInput("X", 288, 64, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label18 = GUICtrlCreateLabel("Dip Stop Chance", 200, 64, 84, 17) Global $maxhillh = GUICtrlCreateInput("X", 288, 104, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label19 = GUICtrlCreateLabel("Max Hill Height", 208, 104, 76, 17) Global $maxhillw = GUICtrlCreateInput("X", 288, 128, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label20 = GUICtrlCreateLabel("Max Hill Width", 208, 128, 76, 17) Global $maxdiph = GUICtrlCreateInput("X", 288, 152, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label21 = GUICtrlCreateLabel("Max Dip Height", 208, 152, 76, 17) Global $maxdipw = GUICtrlCreateInput("X", 288, 176, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label22 = GUICtrlCreateLabel("Max Dip Width", 208, 176, 76, 17) $Label23 = GUICtrlCreateLabel("Step Size", 24, 256, 49, 17) Global $insteph = GUICtrlCreateInput("4", 80, 256, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) Global $indirtlayer = GUICtrlCreateInput("4", 240, 216, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label24 = GUICtrlCreateLabel("Dirt Offset", 188, 216, 49, 17) Global $inrocklayer1 = GUICtrlCreateInput("X", 240, 240, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label26 = GUICtrlCreateLabel("Rock Layer", 176, 240, 62, 17) $Label27 = GUICtrlCreateLabel("--", 280, 240, 10, 17) Global $inrocklayer2 = GUICtrlCreateInput("X", 288, 240, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) Global $intoolowdnchance1 = GUICtrlCreateInput("1", 160, 296, 25, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label25 = GUICtrlCreateLabel("Elev. Dn chance if toolow =1", 8, 298, 148, 17) $Label28 = GUICtrlCreateLabel("of", 192, 298, 13, 17) Global $intoolowdnchance2 = GUICtrlCreateInput("5", 208, 296, 25, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) Global $intoohupchance1 = GUICtrlCreateInput("1", 160, 320, 25, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label29 = GUICtrlCreateLabel("Elev. Up chance if tooh =1", 8, 322, 147, 17) $Label30 = GUICtrlCreateLabel("of", 192, 322, 13, 17) Global $intoohupchance2 = GUICtrlCreateInput("5", 208, 320, 25, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) $Label31 = GUICtrlCreateLabel("Height Max", 16, 208, 58, 17) Global $inhmax = GUICtrlCreateInput("20", 80, 208, 41, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER)) GUICtrlSetTip(-1, "This is pixels from the top of the drawing area") Global $checkrandom = GUICtrlCreateCheckbox("Randomize Gen. #", 32, 160, 113, 17) Global $btndefault = GUICtrlCreateButton("Default Values", 280, 312, 99, 25, $WS_GROUP) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### EndFunc
H4CK3D Posted August 21, 2011 Posted August 21, 2011 (edited) Add a pair of rare cliff and it will be cool. @edit Can you make map generator? That will be cool too ;P xD FOR THE GAMES! Edited August 21, 2011 by H4CK3D
enaiman Posted August 21, 2011 Posted August 21, 2011 Good work Personally, I think that "random" is not good enough sometimes so we need to "help" a little. I am talking about some corrections like: - consider the following example: _|__ or similar (mirrored) where you have a "false" peak or a false valley - if you level that with the neighbours, it will look better. However, if the peak is a "true" one ( _|_ ) - only one pixel either side - then you keep that as it is. It does require a bit of thinking, but you already said that you have enough time SNMP_UDF ... for SNMPv1 and v2c so far, GetBulk and a new example script wannabe "Unbeatable" Tic-Tac-Toe Paper-Scissor-Rock ... try to beat it anyway :)
TheGuardian Posted August 22, 2011 Author Posted August 22, 2011 (edited) Sorry not quite sure what you're saying, maybe you could word it differently or show me a picture? Though this code (if ran in continuous and random #'s checked) 1. Will Randomize the Gen options (elevation and flatness) 2. Run cycles till it gets too high or low then set gen options to normal 3. When it reaches towards the middle will generate new random gen options 4. Uncomment line 276 for it to randomize new options every loop. (;randomgenops()) (a little too speratic) expandcollapse popup#include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <GDIPlus.au3> #include <Array.au3> #Region ### START Koda GUI section ### Form=C:\Users\Matt\Pictures\Gimp\GUI\Form1.kxf $Form1 = GUICreate("Generate Level", 1102, 502, 194, 139, BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS)) GUISetBkColor(0x000000) $btngenerate = GUICtrlCreateButton("Generate!", 464, 472, 179, 25, $WS_GROUP) GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) $statuslbl = GUICtrlCreateLabel("Generating 0/0", 648, 472, 172, 17) GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM+$GUI_DOCKHCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) GUICtrlSetColor(-1, 0x00FF00) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### reloadoptions() ;Load the options GUI GUICtrlSetState($checkcontinue,$GUI_CHECKED) GUICtrlSetState($checkrandom,$GUI_CHECKED) _GDIPlus_Startup() $hwnd = _GDIPlus_GraphicsCreateFromHWND($Form1) Global $greenpen, $blackpen ,$brownpen Dim $mapx[1] Dim $mapy[1] While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $btngenerate If GUICtrlRead($checkrandom) = $GUI_CHECKED then randomgenops() If GUICtrlRead($checkcontinue) = $GUI_CHECKED then Generateinfinite() Else Generateland() EndIf Case $btndefault reloadoptions() EndSwitch WEnd Func btngenerate() If GUICtrlRead($checkrandom) = $GUI_CHECKED then randomgenops() If Not $running = 1 Then If GUICtrlRead($checkcontinue) = $GUI_CHECKED then Generateinfinite() $running = 1 Else Generateland() EndIf Else $running = 0 EndIf EndFunc Func Generateland() Dim $mapx[1] Dim $mapy[1] _GDIPlus_GraphicsClear($hwnd) Global $hwnd = _GDIPlus_GraphicsCreateFromHWND($Form1) $linewidth = GUICtrlRead($inlinesize) $greenpen = _GDIPlus_PenCreate(0xFF00FF00,$linewidth) $brownpen = _GDIPlus_PenCreate(0xFF733D1A,$linewidth) $blackpen = _GDIPlus_PenCreate(0xFF000000,$linewidth) $winsize = WinGetPos("Generate Level") ;YAY! lets do some math... $y = Round(($winsize[3]-50)/2,0) ;offset for bottom, get middle $yoff = Round(($winsize[3]-60)/4,0) ; get the quarters $y = Random($y-$yoff,$y+$yoff,1) ;use the 2 interquarters $x = Round($linewidth/2,0) $bottom = $winsize[3]-80 $bottomlimit = GUICtrlRead($inhmin) $counter = 1 Do GUICtrlSetData($statuslbl,"Generating "&$counter&"/"&Round($winsize[2]/$linewidth,0)) $ran = Random(GUICtrlRead($inmainran1),GUICtrlRead($inmainran2),1) $toolow = 0 $tooh = 0 If $toolow = 1 and $y <= $winsize[3]-$yoff Then $toolow = 0 ;this is to bring level back to normal elevation randomgenops() EndIf If $tooh = 1 and $y >= $yoff Then $tooh = 0 ;this is to bring level back to normal elevation ;Generate Flat If $ran >= GUICtrlRead($ingenflat1) And $ran <= GUICtrlRead($ingenflat2) Then _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0),$greenpen) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0)+GUICtrlRead($indirtlayer),$brownpen) EndIf ;Generate Elevate Up If $ran >= GUICtrlRead($ingenelup1) And $ran <= GUICtrlRead($ingenelup2) Then If $y - GUICtrlRead($insteph) <= GUICtrlRead($inhmax) Then $tooh = 1;Lets not go too far up yea? GUICtrlSetData($ingenelup2,"3") GUICtrlSetData($ingenflat1,"4") GUICtrlSetData($ingenflat2,"7") GUICtrlSetData($ingeneldn1,"8") EndIf ;its too high make it have little chance of going back up until a certain elevation is met ;this gives it a smaller chance to go back up until its low enough If $tooh = 1 And Random(GUICtrlRead($intoohupchance1),GUICtrlRead($intoohupchance2),1) = GUICtrlRead($intoohupchance1) Then $y = $y - GUICtrlRead($insteph) If $tooh = 0 Then $y = $y - GUICtrlRead($insteph) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0),$greenpen) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0)+GUICtrlRead($indirtlayer),$brownpen) EndIf ;Generate Elevate Down If $ran >= GUICtrlRead($ingeneldn1) And $ran <= GUICtrlRead($ingeneldn2) Then If $y + GUICtrlRead($insteph) >= $bottom - $bottomlimit Then $toolow = 1;Lets not go too far down yea? GUICtrlSetData($ingenelup2,"4") GUICtrlSetData($ingenflat1,"5") GUICtrlSetData($ingenflat2,"8") GUICtrlSetData($ingeneldn1,"9") EndIf ;its too low make it have little chance of going down until a certain hight is met ;this gives it a smaller chance to go back down until its high enough If $toolow = 1 and Random(GUICtrlRead($intoolowdnchance1),GUICtrlRead($intoolowdnchance2),1) = GUICtrlRead($intoolowdnchance1) Then $y = $y + GUICtrlRead($insteph) If $toolow = 0 Then $y = $y + GUICtrlRead($insteph) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0),$greenpen) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0)+GUICtrlRead($indirtlayer),$brownpen) EndIf _ArrayAdd($mapx,$x) _ArrayAdd($mapy,$y) $counter = $counter + 1 $x = $x + $linewidth Until $x >= $winsize[2] _ArrayAdd($mapx,$x) _ArrayAdd($mapy,$y) ;_ArrayDisplay($mapx) GUICtrlSetData($statuslbl,"Generated!") Global $mapxy[UBound($mapx)][2] For $i = 1 To UBound($mapx)-1 $mapxy[$i][0] = $mapx[$i] $mapxy[$i][1] = $mapy[$i] Next ;_ArrayDisplay($mapx) $mapx = 0 $mapy = 0 ;_ArrayDisplay($mapxy) EndFunc Func Generateinfinite() _GDIPlus_GraphicsClear($hwnd) Global $hwnd = _GDIPlus_GraphicsCreateFromHWND($Form1) $linewidth = GUICtrlRead($inlinesize) $greenpen = _GDIPlus_PenCreate(0xFF00FF00,$linewidth) $brownpen = _GDIPlus_PenCreate(0xFF733D1A,$linewidth) $blackpen = _GDIPlus_PenCreate(0xFF000000,$linewidth) $winsize = WinGetPos("Generate Level") ;YAY! lets do some math... $y = Round(($winsize[3]-50)/2,0) ;offset for bottom, get middle $yoff = Round(($winsize[3]-60)/4,0) ; get the quarters $y = Random($y-$yoff,$y+$yoff,1) ;use the 2 interquarters $x = Round($linewidth/2,0) $bottom = $winsize[3]-80 $bottomlimit = GUICtrlRead($inhmin) $counter = 1 Do GUICtrlSetData($statuslbl,"Generating "&$counter) $ran = Random(GUICtrlRead($inmainran1),GUICtrlRead($inmainran2),1) $toolow = 0 $tooh = 0 If $toolow = 1 and $y <= $winsize[3]-$yoff Then $toolow = 0 ;this is to bring level back to normal elevation randomgenops() EndIf If $tooh = 1 and $y >= $yoff Then $tooh = 0 ;this is to bring level back to normal elevation _GDIPlus_GraphicsDrawLine($hwnd,$x+20,$bottom,$x+20,1,$blackpen) ;get rid of land infront ;Generate Flat If $ran >= GUICtrlRead($ingenflat1) And $ran <= GUICtrlRead($ingenflat2) Then _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0),$greenpen) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0)+GUICtrlRead($indirtlayer),$brownpen) EndIf ;Generate Elevate Up If $ran >= GUICtrlRead($ingenelup1) And $ran <= GUICtrlRead($ingenelup2) Then If $y - GUICtrlRead($insteph) <= GUICtrlRead($inhmax) Then $tooh = 1;Lets not go too far up yea? GUICtrlSetData($ingenelup2,"3") GUICtrlSetData($ingenflat1,"4") GUICtrlSetData($ingenflat2,"7") GUICtrlSetData($ingeneldn1,"8") EndIf ;its too high make it have little chance of going back up until a certain elevation is met ;this gives it a smaller chance to go back up until its low enough If $tooh = 1 And Random(GUICtrlRead($intoohupchance1),GUICtrlRead($intoohupchance2),1) = GUICtrlRead($intoohupchance1) Then $y = $y - GUICtrlRead($insteph) If $tooh = 0 Then $y = $y - GUICtrlRead($insteph) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0),$greenpen) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0)+GUICtrlRead($indirtlayer),$brownpen) EndIf ;Generate Elevate Down If $ran >= GUICtrlRead($ingeneldn1) And $ran <= GUICtrlRead($ingeneldn2) Then If $y + GUICtrlRead($insteph) >= $bottom - $bottomlimit Then $toolow = 1;Lets not go too far down yea? GUICtrlSetData($ingenelup2,"4") GUICtrlSetData($ingenflat1,"5") GUICtrlSetData($ingenflat2,"8") GUICtrlSetData($ingeneldn1,"9") EndIf ;its too low make it have little chance of going down until a certain hight is met ;this gives it a smaller chance to go back down until its high enough If $toolow = 1 and Random(GUICtrlRead($intoolowdnchance1),GUICtrlRead($intoolowdnchance2),1) = GUICtrlRead($intoolowdnchance1) Then $y = $y + GUICtrlRead($insteph) If $toolow = 0 Then $y = $y + GUICtrlRead($insteph) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0),$greenpen) _GDIPlus_GraphicsDrawLine($hwnd,$x,$bottom,$x,$y + Round($linewidth/2,0)+GUICtrlRead($indirtlayer),$brownpen) EndIf $counter = $counter + 1 $x = $x + $linewidth If $x >= $winsize[2] then ;randomgenops() $x = Round($linewidth/2,0) $blackpen = _GDIPlus_PenCreate(0xFF000000,40) _GDIPlus_GraphicsDrawLine($hwnd,1,$bottom,1,1,$blackpen) ;get rid of land infront in the beginning $blackpen = _GDIPlus_PenCreate(0xFF000000,$linewidth) EndIf Until GUIGetMsg() = $btngenerate GUICtrlSetData($statuslbl,"Generated!") EndFunc @H4CK3D, You can uncomment line 178 (_ArrayDisplay($mapxy)) then run it in non infinite mode and it will give you coordinates to the top layer. I have been getting sidetracked about turning this into a game example but with those coords you can get something basic going. Edited August 22, 2011 by TheGuardian
enaiman Posted August 22, 2011 Posted August 22, 2011 Well, I hope the attached pic will explain it better. SNMP_UDF ... for SNMPv1 and v2c so far, GetBulk and a new example script wannabe "Unbeatable" Tic-Tac-Toe Paper-Scissor-Rock ... try to beat it anyway :)
TheGuardian Posted August 23, 2011 Author Posted August 23, 2011 (edited) Well, I hope the attached pic will explain it better. Ahh, yes I see that now. Well I can work on smoothing it out a little. But lately I've been working on getting it to generate 4 snapshots of the 800width generation and combining all of them into one BMP. That can be made into a sprite and used to scroll across the screen in a game. If you wanted to help improve the smoothing a bit I can give you a few tips on it. 1. You can use the XY coords that are generated with the generation. 2. Use those and have it determine nearby pixels. 3. Since it uses crappy gdi-lines your going to want to draw a blackline over the $x line and replace it with a new line with the new $y I'll hop around to that but if you or anyone else wanted a project to do and offer your help, it would be cool. heres what I've gotten it to do. (image) (i couldn't get forum to upload it ;/) This is using Line size 25, dirt and step are 10. http://dl.dropbox.com/u/24325730/Images/mainlevel.png Edited August 23, 2011 by TheGuardian
enaiman Posted August 23, 2011 Posted August 23, 2011 I'm not interested in using it atm - I was just giving you an idea to improve that a little bit. SNMP_UDF ... for SNMPv1 and v2c so far, GetBulk and a new example script wannabe "Unbeatable" Tic-Tac-Toe Paper-Scissor-Rock ... try to beat it anyway :)
TheGuardian Posted August 23, 2011 Author Posted August 23, 2011 (edited) Oh, it's all good maybe when I'm in the mood to dive back in I can add some terrain smoothing, it's in my head I just don't feel like scripting it atm. I've just been figuring out how I'm going to get collision and stuff like that for the game, never done a game before :/ ___Mapping the terrain from a .BMP file.___ I have an idea of ditching the array that's initially created instead, I can have it do some sort of pixel search line by line to determine the terrain then from there it gets mapped into coords to use for collision. Advantages of this could be making your own level with like paint or something and adding decorations and stuff and being able to share the map. Disadvantages is that its a little more work, it can be glitchy if done wrong, and it may be a little slow as I know pixel searching is slow. (may be able to counter this) Edited August 23, 2011 by TheGuardian
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now