Skip to content

Instantly share code, notes, and snippets.

@Nucleareal
Created April 1, 2014 14:45
Show Gist options
  • Select an option

  • Save Nucleareal/9915566 to your computer and use it in GitHub Desktop.

Select an option

Save Nucleareal/9915566 to your computer and use it in GitHub Desktop.
昔書かれた糞コード
#include "hspkey.as"
buffer 1 : picload ".\\img\\life.bmp"
lifesize_x = ginfo(12)/8
lifesize_y = ginfo(13)
gsel 0
betreg = 0 : betweencntr = 5
betred = 50 : betweencntt = 2
fieldbase_x = 480
fieldbase_y = 480
base_x = 0
base_y = 0
field_x = fieldbase_x / lifesize_x
field_y = fieldbase_y / lifesize_y
fdx_x = field_x-1
fdx_y = field_y-1
dim field ,field_x,field_y
dim chgflg,field_x,field_y
notedata = "" : predata = ""
notesel notedata
noteload ".\\startlife.txt"
repeat field_y
cntr = cnt
noteget predata,cnt
repeat field_y
field(cnt,cntr) = int(strmid(predata,cnt,1))
loop
loop
repeat
generationflg = 0
hspgetkey
if (keychk_Enter) {
if (keysub_Enter == 0) {
generationflg = 1
keysub_Enter++
}
else {
if (keysub_Enter > betreg) {
if (keysub_Enter > betred) {
if (keysub_Enter \ betweencntt == 0) {
generationflg = 1
keysub_Enter++
}
else {
keysub_Enter++
}
}
else {
if (keysub_Enter \ betweencntr == 0) {
generationflg = 1
keysub_Enter++
}
else {
keysub_Enter++
}
}
}
else {
keysub_Enter++
}
}
}
else {
keysub_Enter = 0
}
redraw 0
color 255,255,255 : boxf
gmode 0,lifesize_x,lifesize_y
repeat field_y
cntr = cnt
repeat field_x
pos base_x+cnt*lifesize_x,base_y+cntr*lifesize_y
gcopy 1,field(cnt,cntr)*lifesize_x,0
loop
loop
redraw 1
if (generationflg) {
repeat field_y
cntr = cnt
repeat field_x
searchlifecnt = 0
switch field(cnt,cntr)
case 0
if (cnt <= 0) {
if (cntr <= 0) {
//左上
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
if (field(cnt+1,cntr+1)) : searchlifecnt++ //右下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
}
else {
if (cntr >= fdx_y) {
//左下
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
if (field(cnt+1,cntr-1)) : searchlifecnt++ //右上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
}
else {
//左
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
if (field(cnt+1,cntr-1)) : searchlifecnt++ //右上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
if (field(cnt+1,cntr+1)) : searchlifecnt++ //右下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
}
}
}
else {
if (cnt >= fdx_x) {
if (cntr <= 0) {
//右上
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
if (field(cnt-1,cntr+1)) : searchlifecnt++ //左下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
}
else {
if (cntr >= fdx_y) {
//右下
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
if (field(cnt-1,cntr-1)) : searchlifecnt++ //左上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
}
else {
//右
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
if (field(cnt-1,cntr+1)) : searchlifecnt++ //左下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
if (field(cnt-1,cntr-1)) : searchlifecnt++ //左上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
}
}
}
else {
if (cntr <= 0) {
//上
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
if (field(cnt-1,cntr+1)) : searchlifecnt++ //左下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
if (field(cnt+1,cntr+1)) : searchlifecnt++ //右下探索
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
}
else {
if (cntr >= fdx_y) {
//下
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
if (field(cnt+1,cntr-1)) : searchlifecnt++ //右上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
if (field(cnt-1,cntr-1)) : searchlifecnt++ //左上探索
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
}
else {
//中央
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
if (field(cnt+1,cntr-1)) : searchlifecnt++ //右上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
if (field(cnt-1,cntr-1)) : searchlifecnt++ //左上探索
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
if (field(cnt-1,cntr+1)) : searchlifecnt++ //左下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
if (field(cnt+1,cntr+1)) : searchlifecnt++ //右下探索
}
}
}
}
if (searchlifecnt == 3) {
chgflg(cnt,cntr) = 1 //生命誕生
}
swbreak
case 1
if (cnt <= 0) {
if (cntr <= 0) {
//左上
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
if (field(cnt+1,cntr+1)) : searchlifecnt++ //右下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
}
else {
if (cntr >= fdx_y) {
//左下
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
if (field(cnt+1,cntr-1)) : searchlifecnt++ //右上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
}
else {
//左
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
if (field(cnt+1,cntr-1)) : searchlifecnt++ //右上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
if (field(cnt+1,cntr+1)) : searchlifecnt++ //右下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
}
}
}
else {
if (cnt >= fdx_x) {
if (cntr <= 0) {
//右上
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
if (field(cnt-1,cntr+1)) : searchlifecnt++ //左下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
}
else {
if (cntr >= fdx_y) {
//右下
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
if (field(cnt-1,cntr-1)) : searchlifecnt++ //左上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
}
else {
//右
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
if (field(cnt-1,cntr+1)) : searchlifecnt++ //左下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
if (field(cnt-1,cntr-1)) : searchlifecnt++ //左上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
}
}
}
else {
if (cntr <= 0) {
//上
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
if (field(cnt-1,cntr+1)) : searchlifecnt++ //左下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
if (field(cnt+1,cntr+1)) : searchlifecnt++ //右下探索
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
}
else {
if (cntr >= fdx_y) {
//下
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
if (field(cnt+1,cntr-1)) : searchlifecnt++ //右上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
if (field(cnt-1,cntr-1)) : searchlifecnt++ //左上探索
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
}
else {
//中央
if (field(cnt+1,cntr )) : searchlifecnt++ //右探索
if (field(cnt+1,cntr-1)) : searchlifecnt++ //右上探索
if (field(cnt ,cntr-1)) : searchlifecnt++ //上探索
if (field(cnt-1,cntr-1)) : searchlifecnt++ //左上探索
if (field(cnt-1,cntr )) : searchlifecnt++ //左探索
if (field(cnt-1,cntr+1)) : searchlifecnt++ //左下探索
if (field(cnt ,cntr+1)) : searchlifecnt++ //下探索
if (field(cnt+1,cntr+1)) : searchlifecnt++ //右下探索
}
}
}
}
switch searchlifecnt
case 2
case 3
chgflg(cnt,cntr) = 1
swbreak
default
chgflg(cnt,cntr) = 0
swbreak
swend
swbreak
swend
loop
loop
repeat field_y
cntr = cnt
repeat field_x
field(cnt,cntr) = chgflg(cnt,cntr)
loop
loop
}
await 1
loop
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment