地形作成ゲーム The game which makes the shape of the ground
processingで作った地形を作って遊ぶゲームです。
木、土、葉っぱ、水、岩を置いたり消したりできます。
左クリックで土や草や水を置くことができます。
右クリックで土や木、水などを掘ったり取ったりできます。
人の操作は、ASDWキーで、←↓→↑を操作します。
人が持つブロックは、◀▶で選択します。
This was made by processing. The game with which the shape of the land is made.
This game is able to put or get a wood,a ground, a leaf, water and a rock.
When you left-click, it’s possible to put a block of a ground, grass and water.
When you right-click, it’s possible to get a ground, a wood and a water.
The way to move a main character is “ASDW” key, and you can change the direction “←↓→↑”.
The block the main character holds in his hand is chosen in “◀▶” key.
shift+Dキーを押すと、どれだけの負荷がかかっているかの情報を見ることができます。いろんなボタンが表示されますが、Dキーでボタンを消せば、ゲームに集中できます。
Pressing “shift + D” key will display information on load on the PC. Various buttons are displayed, but you can concentrate on the game by pressing the “D” key and deleting the display.
動画↓
ソースコードは、こちら↓
地形 ground
int[][] veryerror = { //50x5 {1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, }, {1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, }, {1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, }, {1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, }, {0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, }, }; float framerate = frameRate; int seed = int(random(2147483647)); int fileerror; boolean debug; void ik(PImage data, float x, float y, float k, boolean h) { PGraphics pg = createGraphics(data.width, data.height); if (h) { k = -k; pg.beginDraw(); pg.scale(-1, 1); pg.image(data, -data.width, 0); pg.endDraw(); data = pg.get(); } x -= (data.width/2); y -= (data.height/2); pushMatrix(); translate(x + (data.width/2), y + (data.height/2)); rotate(radians(k)); image(data, 0-data.width/2, 0-data.height/2); popMatrix(); rotate(0); } boolean[] Key = new boolean[128]; PFont font; String fontpass = "data/font32.vlw"; void setup() { if (loadBytes(fontpass) == null) { fileerror = 2; } else { font = loadFont(fontpass); textFont(font); } ; size(720, 512); //45x32 noStroke(); noSmooth(); bgsetting(1); if (load() != 1)fileerror++; //gazouworo-do println(fileerror); if (fileerror > 0)noLoop(); if (fileerror == 1) { textSize(32); background(0); fill(255, 255, 255); text("画像ファイルが見当たらねぇんだけど、", 3, 32); text("no image file", 3, 64); textSize(16); text("これらのファイルが見つかりません", 3, 128-16); text(errorfilelist, 3, 128); textSize(16); } if (fileerror >= 2) { background(0, 0, 0); for (int i = 0; i < 50; i++) { for (int f = 0; f < 5; f++) { if (veryerror[f][i] == 1) { fill(255); rect((i+0.5)*14.4, (f+15)*14.4, 14.4, 14.4); } } } } if (fileerror == 0) { seise(0); } } boolean guie = true; int mla = 0; void keisoku(String a, int y) { if (debug) { String in = a; int scx = (millis()-mla); mla = millis(); fill(0); textSize(16); text(in, 0, (y+1)*18); text(" Time", 64, (y+1)*18); fill(0); rect((120)-1, (y*18)-1+2, (scx*2)+2, 16+2); fill(255); rect(120, y*18+2, scx*2, 16); } } void draw() { if (frameCount%30 == 0) { framerate = frameRate; } if (fileerror == 0) { ; background(bgcolor); bg(); keisoku("ハイケイ ", 0); scale(1); pld(); fill(0); textSize(16); keisoku("プレイヤー", 1); mdraw(); keisoku("マップ", 2); if (frameCount < 5) { for (int i = 0; i < 100; i++) { mm(); } } if (frameCount%4 == 0)mm(); keisoku("エンザン", 3); if (Key['N'])guie = false; if (Key['n'])guie = true; if (guie)gdraw(); keisoku("ジーユーアイ", 4); ; if (Key['D']) { debug = true; } if (Key['d']) { debug = false; } } }
key
void keyPressed() { int t = key; //println(int(keyCode)); if (t < 128) { Key[t] = true; } if (t > 256) { t = keyCode; if (t < 128) { Key[t] = true; } } } void keyReleased() { int t = key; if (t < 128) { Key[t] = false; } if (t > 256) { t = keyCode; if (t < 128) { Key[t] = false; } } }
bg
PGraphics bger; PImage kumo0, kumo1, kumos0, kumos1; float s; int kky = 256, kkys = -16; void bgsetting(int ba) { kumo0 = loadImage("tex/kr.png"); kumo1 = loadImage("tex/kl.png"); kumos0 = loadImage("tex/krs.png"); kumos1 = loadImage("tex/kls.png"); background(bgcolor); bger = createGraphics(720+32, 512); bger.noSmooth(); noiseDetail(1); for (int i = 0; i < ba; i++) { bger.beginDraw(); bger.noStroke(); bger.fill(bgcolor); bger.rect(719, 0, 1, 512); bger.fill(255); bger.rect(719, kky+16, 1, 512-kky); if (frameCount%50 == 0) { if (noise(s)*2 > (float)int(((float)kky/512)*100)/100) { kkys = 1; } else { kkys = -1; } } kky += kkys; //println((float)int(((float)y/512)*20)/20); s += 0.05; bger.image(bger.get(1, 0, 719, 512), 0, 0); bger.endDraw(); } } boolean fai = false; int okk; void bg() { background(bgcolor); noiseDetail(2); if (frameCount%2 == 1) { bger.beginDraw(); okk = kkys; if (frameCount%32 == 1) { bger.noStroke(); bger.fill(bgcolor); bger.rect(736, 0, 16, 512); bger.fill(255); bger.rect(736, kky+16, 16, 512-kky); if (kkys > 0) { bger.image(kumo1, 736, kky); bger.tint(bgcolor); bger.image(kumos1, 736-16, kky-18); bger.noTint(); } else { bger.image(kumo0, 736, kky); bger.tint(bgcolor); bger.image(kumos0, 736-16, kky-18); bger.noTint(); } kkys = okk; if (noise(s)/2 > (float)int(((float)kky/512)*64)/64) { kkys = 16; } else { kkys = -16; } //println((float)int(((float)y/512)*20)/20); s += 0.15/2; if (int(okk) == int(kkys))kky += kkys; } bger.image(bger.get(1, 0, 751, 512), 0, 0); bger.endDraw(); } image(bger, 0, 0); fill(bgcolor); rect(0, 256, 720, 256); }
gui
PImage sloti; boolean c = false; float ssa = 0; int[] iteml = { 1, 2, 3, 0, 4, 7, 8, }; int sl = 3; int[] sitem = new int[iteml.length]; int[] tsitem = new int[iteml.length]; boolean tm, tm2; void gdraw() { int l = iteml.length; for (int i = 0; i < l; i++) { int ss = 0; if (tsitem[i] != sitem[i]) { ss = -1; } if (sitem[i] > 1024)sitem[i] = 1024; tint(255, 128); image(sloti, 360+((i-((float)l/2))*48), 0); noTint(); if (i == sl)image(sloti, 360+((i-((float)l/2))*48), 0); tint(0, 128); image(blocks[iteml[i]], 360+((i-((float)l/2))*48)+8+1, 8+1, 32, 32); tint(255); if (sitem[i] > 0)noTint(); image(blocks[iteml[i]], 360+((i-((float)l/2))*48)+7, 7, 32, 32); fill(64); if (ss < 0) { blendMode(ADD); rect(360+((i-((float)l/2))*48)+7, 7, 32, 32); blendMode(BLEND); } textSize(16); if (sitem[i] > 0)tex(str(sitem[i]), 360+((i-((float)l/2))*48)+43-(textWidth(str(sitem[i]))), 35, 230); if (sitem[i] < 0)sitem[i] = 0; //チート if (frameCount < 10) { if (iteml[i] != 0)sitem[i] = 16; } tsitem[i] = sitem[i]; //チート終わり } if (Key[RIGHT]) { if (!tm) { sl++; if (sl >= l)sl = 0; tm = true; } } else { tm = false; } if (Key[LEFT]) { if (!tm2) { sl--; if (sl < 0)sl = l-1; tm2 = true; } } else { tm2 = false; } ; if (debug) { c = false; if (bot("ON", 662, 0, ken == 1))ken = 1; if (bot("OFF", 662-60, 0, ken == 0))ken = 0; if (bot("チート", 662, 60, c)) { //c = true; for (int i = 0; i < l; i++) { sitem[i] = 9999; } } if (bot("デバック", 662-60, 60, c)) { for (int i = 0; i < 450; i++) { for (int f = 0; f < 31; f++) { map[i][f] = 0; } } } /* if (bot("-", 662-60, 95, c)) { ssa -= 0.002; seise(ssa); for(int i = 0; i < 30; i++){ mm(); } } if (bot("+", 662, 95, c)) { ssa += 0.002; seise(ssa); for(int i = 0; i < 30; i++){ mm(); } } */ textSize(16); tex("キーボード操作", 602, 47, 240); ; fill(0); } //rect((float)sx/10, 0, 1, 1); } ; ; boolean bot(String t, float x, float y, boolean f) { int w = 50; int h = 40-8; //w = int(textWidth(t)+16)-8; x += 2; y += 2; ; w -= 2; h -= 2; x += 2; y += 2; boolean a = false; if (x <= mouseX && x+w >= mouseX) { if (y <= mouseY && y+h >= mouseY) { a = true; } } w += 2; h += 2; x -= 2; y -= 2; int ofx = 0; int ofy = -4; ; w -= 2; h -= 2; x += 3; y += 4; ; fill(0, 64); rect(x, y, w, h); if (f)rect(x, y, w, h); fill(255); text(t, x+(w/2)-(textWidth(t)/2)+ofx, h+2+y-7+ofy); if (!mousePressed)a = false; return a; }
img
PImage pla, plb, plu; PImage[] blocks = new PImage[256]; String m; String errorfilelist = ""; PImage loadimage(String in) { PImage out = loadImage(in); if (out == null) { fileerror = 1; errorfilelist += in+"\n"; } return out; } int load() { int ok = 1; pla = loadimage("tex/asi.png"); plb = loadimage("tex/body.png"); plu = loadimage("tex/ude.png"); blocks[0] = loadimage("tex/air.png"); blocks[1] = loadimage("tex/tuti.png"); blocks[2] = loadimage("tex/kusa.png"); blocks[3] = loadimage("tex/isi.png"); blocks[4] = loadimage("tex/mizuk.png"); blocks[5] = loadimage("tex/mizu.png"); blocks[6] = loadimage("tex/mizu2.png"); blocks[7] = loadimage("tex/woodf.png"); blocks[8] = loadimage("tex/ha.png"); blocks[9] = loadimage("tex/point.png"); for(int i = 128; i < 128+64; i++){ blocks[i] = loadimage("tex/speq.png").get((i-128)*16,0,16,16); } PImage nulli = loadimage("tex/null.png"); for (int i = 0; i < 256; i++) { if (blocks[i] == null)blocks[i] = nulli; } sloti = loadimage("tex/slota.png"); return ok; } void tex(String in, float x, float y) { x += 2; y += 7; fill(0); for (int i = -2; i < 3; i++) { for (int f = -2; f < 3; f++) { text(in, x+i, y+f); } } fill(255); text(in, x, y); } void tex(String in, float x, float y, float t) { x += 2; y += 7; fill(0, t/16); for (int i = -2; i < 3; i++) { for (int f = -2; f < 3; f++) { text(in, x+i, y+f); } } fill(255, t); text(in, x, y); } PImage mt(PImage data, PImage data2, boolean f) { PGraphics pg = createGraphics(data.width, data.height); pg.beginDraw(); pg.image(data, 0, 0); if(!f)pg.tint(255,128); pg.image(data2, 10, 48); pg.endDraw(); return pg; }
map
int[][] map = new int[450][32]; boolean[][] mapa = new boolean[450][32]; color bgcolor = color(224, 240, 255); int sx = 203*16+320; void seise(float tw) { //seed = 1470879616; for (int i = 0; i < 450; i++) { for (int f = 0; f < 32; f++) { map[i][f] = 0; mapa[i][f] = false; if (random(0.0, 1.0) > 0)mapa[i][f] = true; } } noiseDetail(5); noiseSeed(seed); randomSeed(seed); println("seed = "+seed); float n = 0; float na = 0; int t = 0; int ot = 0; int bck = 0; for (int i = 0; i < 450; i++) { float k = (((noise(n, tw)-0.5)*2)*16)+16; n += 0.03; na += 0.07; ; ot = t; t = int(k); boolean af = false; if (noise(na, tw) < 0.1)af = true; for (int f = t; f < 32; f++) { if (t <= 16) { map[i][f] = 2; } else { map[i][f] = 1; } } for (int f = t+1; f < 32; f++) { map[i][f] = 1; } if (af) { for (int f = t; f < noise(10, 16, tw); f++) { map[i][f] = 3; } } if (t > 17) { map[i][t] = 3; if (t+1 < 32)map[i][t+1] = 3; } else { if (random(100) < 12 && i%7 == 0) { map[i][t+1] = 1; map[i][t] = 1; if (t > 1)map[i][t-1] = 7; if (t > 2)map[i][t-2] = 7; if (t > 3)map[i][t-3] = 7; //if (t > 3 && i > 2)map[i-2][t-3] = 8; //if (t > 3 && i > 1)map[i-1][t-3] = 8; //if (t > 3 && i < 450-2)map[i+2][t-3] = 8; //if (t > 3 && i < 450-1)map[i+1][t-3] = 8; ; if (t > 4 && i > 2)map[i-2][t-4] = 8; if (t > 4 && i > 1)map[i-1][t-4] = 8; if (t > 4)map[i][t-4] = 7; if (t > 4 && i < 450-2)map[i+2][t-4] = 8; if (t > 4 && i < 450-1)map[i+1][t-4] = 8; ; if (t > 5 && i > 2)map[i-2][t-5] = 8; if (t > 5 && i > 1)map[i-1][t-5] = 8; if (t > 5)map[i][t-5] = 7; if (t > 5 && i < 450-2)map[i+2][t-5] = 8; if (t > 5 && i < 450-1)map[i+1][t-5] = 8; ; if (t > 6 && i > 2)map[i-2][t-6] = 8; if (t > 6 && i > 1)map[i-1][t-6] = 8; if (t > 6)map[i][t-6] = 8; if (t > 6 && i < 450-2)map[i+2][t-6] = 8; if (t > 6 && i < 450-1)map[i+1][t-6] = 8; ; if (t > 7 && i > 7)map[i-1][t-7] = 8; if (t > 7)map[i][t-7] = 8; if (t > 7 && i < 450-1)map[i+1][t-7] = 8; ; } } for (int f = int(noise((float)i/10)*5)+24; f < 32; f++) { if (map[i][f] != 0)map[i][f] = 3; } for (int f = 0; f < 32; f++) { if (noise((float)i/24, (float)f/24) < 0.3) { if (map[i][f] == 1 || map[i][f] == 2 || map[i][f] == 3) { map[i][f] = 0; bck++; } } } if (map[i][16] == 0)map[i][16] = 4; if (random(100) < 2 && t > 0)map[i][t-1] = 4; } for (int i = 0; i < 450; i++) { for (int f = 0; f < 32; f++) { if (i <= 0 || i > 430)map[i][f] = 9; } } println(bck+"ブロックをぶっ壊しました"); } float fa = 0; void mm() { int t = sx/16; if (t > 448-50)t = 448-50; if (sx >= (448-50)*16) { sx = ((448-50)*16)-1; plx -= 1; plxs = 0; } //fa -= 0.5; if (fa < 0)fa = 0; for (int x = -1; x < 450; x++) { fa -= 1; if (fa < 0)fa = 0; for (int y = 0; y < 32; y++) { int xt = x; if (xt < 0)xt = 0; if (xt >= 450)xt = 449; int a = map[xt][y]; if (fa <= 0) { if (map[xt][y] == 1 || map[xt][y] == 2 || map[xt][y] == 3 || map[xt][y] == 7) { if (y < 32-1) { if (map[xt][y+1] == 0 || map[xt][y+1] == 4) { if (xt > 1 && xt < 449) { if (map[xt-1][y] == 0 || map[xt+1][y] == 0) { map[xt][y+1] = map[xt][y]; map[xt][y] = 0; fa = 1; } } } } } } if (y > 1 && map[xt][y] == 2) { if (map[xt][y-1] != 0 && map[xt][y-1] != 4) { map[xt][y] = 1; } } if (y > 0 && map[xt][y] == 4 && map[xt][y-1] == 0)a = 5; ; if (fa <= 0) { ; if (y+1 < 32) { if (map[xt][y] == 4 || map[xt][y] == 5) { if (map[xt][y+1] > 0 && map[xt][y+1] < 4) { if (xt < 449) { if (map[xt+1][y] == 0) { map[xt+1][y] = 4; fa = 3; } } if (xt > 000) { if (map[xt-1][y] == 0) { map[xt-1][y] = 4; fa = 2; } } //if(y > 1)map[xt][y-1] = 0; } if (map[xt][y+1] == 0) { map[xt][y+1] = 4; //if(y > 1)map[xt][y] = 0; fa = 1; } } } ; } } } } void mdraw() { ; int t = sx/16; for (int x = -1; x < 46; x++) { int f = 0; for (int y = 0; y < 32; y++) { int xt = x+t; if (xt < 0)xt = 0; int a = map[xt][y]; if (y > 0 && map[xt][y] == 4 && map[xt][y-1] == 0)a = 5; blendMode(BLEND); noTint(); if (a != 0 && a != 4 && a != 8 && a != 7) { f++; } tint(255-(f*3)); if (a >= 4 && a <= 6) { blendMode(MULTIPLY); tint(255, 80); } if (a != 0) { image(blocks[a], (x*16)-(sx%16), y*16); } if (a == 5) { blendMode(ADD); tint(255); image(blocks[128+(((frameCount+(x*30*30))%(64*30))/30)], (x*16)-(sx%16), y*16); } ; } ; } blendMode(BLEND); noTint(); image(blocks[9], (mx*16)+(sx%16), (my*16)); //sx = int(sx/16)*16; }
player
int ken = 1; float plx = 3248+(720), ply = 64, plxs, plys, plr, plar, plrr, pls = 10; float plm = 54; float pff = 1; boolean je = false; boolean pae = false; float grav = 1; float jp = 1; boolean dow = false; int bta; int mx,my; void pld() { ; pae = true; //if (sx%16 == 0)pae = true; ; //プレイヤー描画 tint(220, 200, 180); int up = 0; int ap = 0; if (plxs < 0)up = 6; if (plxs < 0)ap = -3; ply -= plb.height; plx -= plb.width/2; plx -= sx; int tem = 0; plm = 52; pff = 1; if (dow) { tem = 18; plm = 75; pff = 0.5; } float fa = 0; /* if(frameCount%2 == 0){ fa -= 0.5; }else{ fa += 0.5; } */ bta = (tem+bta*10)/11; //println(dow); ik(pla, plx+17+ap, ply+32+fa, (-int(plar/3)*3)+plrr, plxs < 0);//後ろ足 ik(plu, plx+12+up, ply+20+bta+fa, (-int(plr/3)*3)+plrr+2, plxs < 0);//後ろ腕 noTint(); ik(pla, plx+17+ap, ply+32+fa, (+int(plar/3)*3)+plrr, plxs < 0);//前足 ik(plb, int(plx+15.5+0.5), int(ply+32+bta+0.5), (0+plrr), plxs < 0);//体 int baa = iteml[sl]; PImage hand = mt(plu, blocks[baa], sitem[sl] > 0); ik(hand, plx+12+up+fa, ply+21+bta, (+int(plr/3)*3)+plrr, plxs < 0);//前腕 ply += plb.height; plx += plb.width/2; plx += sx; plr = -sin(pls)*25*pff; plar = sin(pls)*20*pff; //プレイヤー描画終了 int t = sx/16; //プレイヤー操作 ; /* if (Key[LEFT ])plxs += -0.1; if (Key[RIGHT])plxs += +0.1; */ ; int xa = mouseY - pmouseY; if (ken == 1) { if (Key['a'])plxs += -0.1; if (Key['d'])plxs += +0.1; if (je)if (Key['w'])plys = -2.1*2*jp; if (Key['s']) { dow = true; } else { dow = false; } } else { if (mouseX < plx-sx-16)plxs += -0.1; if (mouseX > plx-sx+16)plxs += +0.1; if (je)if (xa < -4)plys = -2.1*2*jp; if (je)if (xa < -16)plys += -1*2*jp; } //println(sx%16); mx = int(round((mouseX-(sx%16))/16)); my = (mouseY)/16; if (mousePressed) { if (my > 31)my = 31; if (my < 0)my = 0; if (mouseButton == RIGHT) { for (int i = 0; i < iteml.length; i++) { if (map[mx+t][my] == iteml[i] && map[mx+t][my] != 0)sitem[i]++; } map[mx+t][my] = 0; } if (mouseButton == LEFT) { int b = iteml[sl]; if (sitem[sl] > 0 && map[mx+t][my] == 0 || map[mx+t][my] == 4 || map[mx+t][my] == 5) { if (b != 0) { map[mx+t][my] = b; sitem[sl]--; } } } } ; //if (je)if (Key[UP])plys = -2; plys += 0.2/2*grav; if (ply > 512)plys = -0.1; plxs /= plm/50; // float aplxs = plxs; if (aplxs < 0)aplxs = -aplxs; pls += aplxs/13; if (pls > TWO_PI)pls = 0; pff += 0.1; if (aplxs < 0.2)pff -= 0.2; if (pff > 1)pff = 1; if (pff < 0)pff = 0; ; //println(pls); //プレイヤー操作終了 ; if (t > 449-45)t = 449-45; //問題の当たり判定プログラム int px = int(plx/16); int py = int(ply/16); if (py >= 32)py = 31-1; if (px >= 450-1)px = 449-1; if (px < 1)px = 1; if (py < 1)py = 1; textSize(32); int ff = map[px][py]; //tex(" "+str(int(ff)), 0, 24); grav = 1; je = false; if (ff > 0 && ff < 4 || ff > 6) { plys = -0.01; ply = py*16; je = true; } /* if(Key[SHIFT]){ grav = 0.05; je = true; } */ ff = map[px-1][py-1]; if (ff == 0 && py > 2)ff = map[px-1][py-2]; if (!dow)if (ff == 0 && py > 3)ff = map[px-1][py-3]; if (ff >= 4 && ff <= 6)ff = 0; if (ff > 0) { plx += 2; plxs = -0.01; } ff = map[px+1][py-1]; if (ff == 0 && py > 2)ff = map[px+1][py-2]; if (!dow)if (ff == 0 && py > 3)ff = map[px+1][py-3]; if (ff >= 4 && ff <= 6)ff = 0; if (ff > 0) { plx -= 2; plxs = +0.01; } ; if (py > 1)ff = map[px][py-1]; jp = 1; if (ff >= 4 && ff <= 6) { ff = 0; grav = 0.4; je = true; jp = 0.2; } ; if (py > 4) { ff = map[px][py-4]; if (ff > 0 && ff < 4 || ff > 6) { plys = .5; } } ; if (px-t >= 45-4)sx += 4; if (px-t <= 4)sx -= 4; //加速度 if (pae) { plx += plxs; ply += plys; } if (sx < 0)sx = 0; sx = ((round(sx/16)*16)+sx*15)/16; //println(px); }
遊んでみてください。
Let’s play this game!