extends DxChar; $map.setBGColor(color(0,0,0)); page=0; $screenWidth=800; $screenHeight=700; $Options.set("deactivation_pause",1); randomize(); /* 0:スタート画面 1:選択画面 2:プレイ画面 */ while(1){ if(page==0){ wait(3); $panel.fillRect(0,0,800,550,color(0,0,0)); while(1){ setVisible(0); centerText($screenWidth/2,$screenHeight/2-150,"線ゲー!!",color(46,192,48),90); centerText($screenWidth/2,$screenHeight/2+120,"ENTERキーで選択画面に",color(255,255,255),30); if(getkey(13)==1) {page=1; break;} update(); } } if(page==1){ sentaku=0; wait(8); while(1){ setVisible(0); if(getkey(38)==1) sentaku--; if(getkey(40)==1) sentaku++; if(sentaku==0){ if( (getkey(37)>10 && getkey(37)<=25 && getkey(37)%5==0) || (getkey(37)>25 && getkey(37)<=80 && getkey(37)%3==0) || (getkey(37)>80 && getkey(37)%2==0) || getkey(37)==1) ninzuu--; if( (getkey(39)>10 && getkey(39)<=25 && getkey(39)%5==0) || (getkey(39)>25 && getkey(39)<=80 && getkey(39)%3==0) || (getkey(39)>80 && getkey(39)%2==0) || getkey(39)==1) ninzuu++; if(ninzuu>=5) ninzuu=2; if(ninzuu<=1) ninzuu=4; } sentakuy=sentaku*50+150; sentakuangle+=4; drawPolygon(120,sentakuy,5,25,color(255,255,255),sentakuangle); centerText(($screenWidth-textWidth("プレイ人数:≪  ≫",30))/2+150,130,"プレイ人数:≪  ≫",color(255,255,255),30); centerText($screenWidth/2+80,130,ninzuu,color(255,255,255),30); centerText($screenWidth/2,$screenHeight/2+120,"ENTERキーでスタート",color(255,255,255),30); if(getkey(13)==1) { page=2; $panel.fillRect(0,0,800,600,color(0,0,0)); break; } update(); } } if(page==2){ stop=1; //xひとつ:座標 //xふたつ:-xで進む距離 x1=rnd(371)+30; y1=rnd(491)+30; xx1=x1; yy1=y1; aitem1=new Array(); angle1=90; died1=null; x2=rnd(741)+30; y2=rnd(246)+30; xx2=x2; yy2=y2; aitem2=new Array(); angle2=180; died2=null; if(ninzuu>=3){ x3=rnd(371)+400; y3=rnd(491)+30; xx3=x3; yy3=y3; aitem3=new Array(); angle3=270; died3=null; } if(ninzuu>=4){ x4=rnd(741)+30; y4=rnd(246)+300; xx4=x4; yy4=y4; aitem4=new Array(); angle4=0; died4=null; } aitemx =new array(); aitemy =new array(); aitemtime=new array(); aitemform=new array(); ki=ninzuu; time=0; time2=0; textsize=80; syousya=null; sinikai=0; $panel.drawLine(0,550,$screenWidth,550,color(255,255,255)); $panel.fillRect(0,551,$screenWidth,$screenHeight,color(105,105,105)); while(1){ speed=1; time++; if(ki<=1) { stop=2; if(died1==null) syousya=1; if(died2==null) syousya=2; if(ninzuu>=3){ if(died3==null) syousya=3; } if(ninzuu>=4){ if(died4==null) syousya=4; } } setVisible(0); //スタート if(stop==1){ if(time<100) { textsize-=0.5; centerText($screenWidth/2,$screenHeight/2-50,"READY",color(255,255,255),textsize,-2); } if(time>=110) { centerText($screenWidth/2,$screenHeight/2-70,"GO!!",color(255,255,255),80,-2); if(time>=140) { stop=null; } } if(y1>$screenHeight/2) { centerText(x1,y1-55,"Player1",color(155,255,255),20,-1); centerText(x1,y1-30,"↓",color(155,255,255),20,-1); } else { centerText(x1,y1+10,"↑",color(155,255,255),20,-1); centerText(x1,y1+35,"Player1",color(155,255,255),20,-1); } if(y2>$screenHeight/2) { centerText(x2,y2-55,"Player2",color(255,155,255),20,-1); centerText(x2,y2-30,"↓",color(255,155,255),20,-1); } else { centerText(x2,y2+10,"↑",color(255,155,255),20,-1); centerText(x2,y2+35,"Player2",color(255,155,255),20,-1); } if(ninzuu>=3){ if(y3>$screenHeight/2) { centerText(x3,y3-55,"Player3",color(255,255,155),20,-1); centerText(x3,y3-30,"↓",color(255,255,155),20,-1); } else { centerText(x3,y3+10,"↑",color(255,255,155),20,-1); centerText(x3,y3+35,"Player3",color(255,255,155),20,-1); } } if(ninzuu>=4){ if(y4>$screenHeight/2) { centerText(x4,y4-55,"Player4",color(35,255,155),20,-1); centerText(x4,y4-30,"↓",color(35,255,155),20,-1); } else { centerText(x4,y4+10,"↑",color(35,255,155),20,-1); centerText(x4,y4+35,"Player4",color(35,255,155),20,-1); } } } //フィニッシュ if(stop==2){ time2++; if(time2<130){ centerText($screenWidth/2,$screenHeight/2-40,"GAME SET!!",color(255,255,255),60,-2); } if(time2>=150){ centerText($screenWidth/2,$screenHeight/2-70,"Player"+syousya+" WIN!!",color(180,180,0),80,-2); } if(getkey(13)==1){ $panel.fillRect(0,0,800,700,color(0,0,0)); break; } } //プレイヤー1 if(died1==null){ if(stop==null){ x1+=cos(angle1-90)*speed; y1+=sin(angle1-90)*speed; $panel.drawLine(xx1,yy1,x1,y1,color(155,255,255)); if(getkey(81)==1) { angle1-=30; } if(getkey(90)==1) { angle1+=30; } } drawSprite(x1,y1,2); seniro1=$panel.getPixel(x1,y1); if((seniro1!=0 || x1<=0 || x1>=800 || y1<=0 || y1>=550) && ki>=2) { died1=1; ki--; for(i=1; i<361; i++){ $panel.drawLine(x1+25*cos(i-1),y1+25*sin(i-1),x1+25*cos(i),y1+25*sin(i),color(155,255,255)); } for(i=1; i<361; i++){ $panel.drawLine(x1+20*cos(i-1),y1+20*sin(i-1),x1+20*cos(i),y1+20*sin(i),color(155,255,255)); } for(i=1; i<361; i++){ $panel.drawLine(x1+15*cos(i-1),y1+15*sin(i-1),x1+15*cos(i),y1+15*sin(i),color(155,255,255)); } for(i=1; i<361; i++){ $panel.drawLine(x1+10*cos(i-1),y1+10*sin(i-1),x1+10*cos(i),y1+10*sin(i),color(155,255,255)); } } drawText(30,560,"Player1: not died",color(155,255,255),15,-1); for(ai1=0; ai1<=aitem1.size()+1; ai1++) { if(aitem1.get(ai1)==0) aitemp1=$pat_aitem+1; drawSprite(585,40+ai1*30,aitemp1); } xx1=x1; yy1=y1; } else { drawText(30,560,"Player1: died",color(255,0,0),15,-1); } //プレイヤー2 if(died2==null){ if(stop==null){ x2+=cos(angle2-90)*speed; y2+=sin(angle2-90)*speed; $panel.drawLine(xx2,yy2,x2,y2,color(255,155,255)); if(getkey(66)==1) { angle2-=30; } if(getkey(77)==1) { angle2+=30; } } drawSprite(x2,y2,2); seniro2=$panel.getPixel(x2,y2); if((seniro2!=0 || x2<=0 || x2>=800 || y2<=0 || y2>=550) && ki>=2) { died2=1; ki--; for(i=1; i<361; i++){ $panel.drawLine(x2+25*cos(i-1),y2+25*sin(i-1),x2+25*cos(i),y2+25*sin(i),color(255,155,255)); } for(i=1; i<361; i++){ $panel.drawLine(x2+20*cos(i-1),y2+20*sin(i-1),x2+20*cos(i),y2+20*sin(i),color(255,155,255)); } for(i=1; i<361; i++){ $panel.drawLine(x2+15*cos(i-1),y2+15*sin(i-1),x2+15*cos(i),y2+15*sin(i),color(255,155,255)); } for(i=1; i<361; i++){ $panel.drawLine(x2+10*cos(i-1),y2+10*sin(i-1),x2+10*cos(i),y2+10*sin(i),color(255,155,255)); } } drawText(30,620,"Player2: not died",color(255,155,255),15,-1); xx2=x2; yy2=y2; } else { drawText(30,620,"Player2: died",color(255,0,0),15,-1); } //プレイヤー3 if(ninzuu>=3){ if(died3==null){ if(stop==null){ x3+=cos(angle3-90)*speed; y3+=sin(angle3-90)*speed; $panel.drawLine(xx3,yy3,x3,y3,color(255,255,155)); if(getkey(37)==1) { angle3-=30; } if(getkey(39)==1) { angle3+=30; } } drawSprite(x3,y3,2); seniro3=$panel.getPixel(x3,y3); if((seniro3!=0 || x3<=0 || x3>=800 || y3<=0 || y3>=550) && ki>=2) { died3=1; ki--; for(i=1; i<361; i++){ $panel.drawLine(x3+25*cos(i-1),y3+25*sin(i-1),x3+25*cos(i),y3+25*sin(i),color(255,255,155)); } for(i=1; i<361; i++){ $panel.drawLine(x3+20*cos(i-1),y3+20*sin(i-1),x3+20*cos(i),y3+20*sin(i),color(255,255,155)); } for(i=1; i<361; i++){ $panel.drawLine(x3+15*cos(i-1),y3+15*sin(i-1),x3+15*cos(i),y3+15*sin(i),color(255,255,155)); } for(i=1; i<361; i++){ $panel.drawLine(x3+10*cos(i-1),y3+10*sin(i-1),x3+10*cos(i),y3+10*sin(i),color(255,255,155)); } } drawText(430,560,"Player3: not died",color(255,255,155),15,-1); xx3=x3; yy3=y3; } else { drawText(430,560,"Player3: died",color(255,0,0),15,-1); } } //プレイヤー4 if(ninzuu>=4){ if(died4==null){ if(stop==null){ x4+=cos(angle4-90)*speed; y4+=sin(angle4-90)*speed; $panel.drawLine(xx4,yy4,x4,y4,color(35,255,155)); if(getkey(99)==1) { angle4-=30; } if(getkey(105)==1) { angle4+=30; } } drawSprite(x4,y4,2); seniro4=$panel.getPixel(x4,y4); if((seniro4!=0 || x4<=0 || x4>=800 || y4<=0 || y4>=550) && ki>=2) { died4=1; ki--; for(i=1; i<361; i++){ $panel.drawLine(x4+25*cos(i-1),y4+25*sin(i-1),x4+25*cos(i),y4+25*sin(i),color(35,255,155)); } for(i=1; i<361; i++){ $panel.drawLine(x4+20*cos(i-1),y4+20*sin(i-1),x4+20*cos(i),y4+20*sin(i),color(35,255,155)); } for(i=1; i<361; i++){ $panel.drawLine(x4+15*cos(i-1),y4+15*sin(i-1),x4+15*cos(i),y4+15*sin(i),color(35,255,155)); } for(i=1; i<361; i++){ $panel.drawLine(x4+10*cos(i-1),y4+10*sin(i-1),x4+10*cos(i),y4+10*sin(i),color(35,255,155)); } } drawText(430,620,"Player4: not died",color(35,255,155),15,-1); xx4=x4; yy4=y4; } else { drawText(430,620,"Player4: died",color(255,0,0),15,-1); } } //アイテム if(stop==null){ if(rnd(1200)==0){ aitemx.add(rnd(771)+15); aitemy.add(rnd(521)+15); aitemtime.add(0); aitemform.add(rnd(1)); } for(aitem=sinikai; aitem1200) { aitemx.delete(aitem); aitemy.delete(aitem); aitemtime.delete(aitem); sinikai++; } else { if(x1+15>=aitemx.get(aitem) && x1-15<=aitemx.get(aitem) && y1+15>=aitemy.get(aitem) && y1-15<=aitemy.get(aitem)){ aitemx.set(aitem,null); aitemy.set(aitem,null); aitemtime.set(aitem,null); aitem1.add(aitemform.get(aitem)); sinikai++; } if(x2+15>=aitemx.get(aitem) && x2-15<=aitemx.get(aitem) && y2+15>=aitemy.get(aitem) && y2-15<=aitemy.get(aitem)){ aitemx.set(aitem,null); aitemy.set(aitem,null); aitemtime.set(aitem,null); aitem2.add(aitemform.get(aitem)); sinikai++; } if(x3+15>=aitemx.get(aitem) && x3-15<=aitemx.get(aitem) && y3+15>=aitemy.get(aitem) && y3-15<=aitemy.get(aitem)){ aitemx.set(aitem,null); aitemy.set(aitem,null); aitemtime.set(aitem,null); aitem3.add(aitemform.get(aitem)); sinikai++; } if(x4+15>=aitemx.get(aitem) && x4-15<=aitemx.get(aitem) && y4+15>=aitemy.get(aitem) && y4-15<=aitemy.get(aitem)){ aitemx.set(aitem,null); aitemy.set(aitem,null); aitemtime.set(aitem,null); aitem4.add(aitemform.get(aitem)); sinikai++; } if(aitemform.get(aitem)==0) drawSprite(aitemx.get(aitem),aitemy.get(aitem),$pat_aitem+0); aitemtime.set(aitem,aitemtime.get(aitem)+1); } } } update(); } page=0; } update(); }