Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
219
Task/2048/Maple/2048.maple
Normal file
219
Task/2048/Maple/2048.maple
Normal file
|
|
@ -0,0 +1,219 @@
|
|||
macro(SP=DocumentTools:-SetProperty, GP=DocumentTools:-GetProperty);
|
||||
G := module()
|
||||
|
||||
export reset,f,getname;
|
||||
local a:=Matrix(4):
|
||||
local buttonpress:="False";
|
||||
local score:=0;
|
||||
local highscoreM,highscore,hscore,hname,M,j,k,z,e,move,r,c,q,w,checklose,loss,matrixtotextarea;
|
||||
|
||||
getname:=proc();
|
||||
hname:=GP("Name",value);
|
||||
buttonpress:="True";
|
||||
if score>hscore then
|
||||
M:=Matrix(1, 2, [[score, hname]]):
|
||||
ExportMatrix("this:///Score.csv",M);
|
||||
reset();
|
||||
else
|
||||
reset();
|
||||
end if;
|
||||
end proc;
|
||||
|
||||
matrixtotextarea:=proc(m)
|
||||
local m2,colors;
|
||||
colors:=["White","Beige","LightGrey",ColorTools:-Color("RGB", [255/255, 127/255, 80/255]),ColorTools:-Color("RGB", [255/255, 99/255, 71/255]),ColorTools:-Color("RGB", [255/255, 69/255, 0/255]),ColorTools:-Color("RGB", [255/255, 0/255, 0/255]),ColorTools:-Color("RGB", [255/255, 215/255, 0/255]), ColorTools:-Color("RGB", [255/255, 255/255, 0/255]),ColorTools:-Color("RGB", [204/255, 204/255, 0/255]),ColorTools:-Color("RGB", [153/255, 153/255, 0/255]),ColorTools:-Color("RGB", [102/255, 102/255, 0/255]), ColorTools:-Color("RGB", [0/255, 0/255, 0/255])];
|
||||
m2 := ArrayTools:-Reshape(m^%T, [16,1]):
|
||||
SP(seq([cat("TextArea",i),value,m2[i+1,1]],i=0..15));
|
||||
SP(seq(["Table1",fillcolor[(`if`(i+1<5,1,`if`(i+1<9 and i+1>4,2,`if`(i+1<13 and i+1>8,3, `if`(i+1<17 and i+1>12,4,1))))),(i mod 4)+1],`if`(m2[i+1,1]=0,colors[1],`if`(m2[i+1,1]=2,colors[2],`if`(m2[i+1,1]=4,colors[3],`if`(m2[i+1,1]=8,colors[4],`if`(m2[i+1,1]=16,colors[5],`if`(m2[i+1,1]=32,colors[6],`if`(m2[i+1,1]=64,colors[7],`if`(m2[i+1,1]=128,colors[8],`if`(m2[i+1,1]=256,colors[9],`if`(m2[i+1,1]=512,colors[10],`if`(m2[i+1,1]=1024,colors[11],`if`(m2[i+1,1]=2048,colors[12],`if`(m2[i+1,1]>2048,colors[13],"White")))))))))))))],i=0..15));
|
||||
SP(seq([cat("TextArea",i),fillcolor,`if`(m2[i+1,1]=0,colors[1],`if`(m2[i+1,1]=2,colors[2],`if`(m2[i+1,1]=4,colors[3],`if`(m2[i+1,1]=8,colors[4],`if`(m2[i+1,1]=16,colors[5],`if`(m2[i+1,1]=32,colors[6],`if`(m2[i+1,1]=64,colors[7],`if`(m2[i+1,1]=128,colors[8],`if`(m2[i+1,1]=256,colors[9],`if`(m2[i+1,1]=512,colors[10],`if`(m2[i+1,1]=1024,colors[11],`if`(m2[i+1,1]=2048,colors[12],`if`(m2[i+1,1]>2048,colors[13],"White")))))))))))))],i=0..15),refresh);
|
||||
SP(seq([cat("TextArea",i),fontcolor,`if`(m2[i+1,1]=0,colors[1],`if`(m2[i+1,1]=2,colors[13],`if`(m2[i+1,1]=4,colors[13],"White")))],i=0..15),refresh);
|
||||
end proc:
|
||||
|
||||
reset:=proc();
|
||||
highscoreM := Import("this:///Score.csv", output = Matrix);
|
||||
hscore := highscoreM[1,1];
|
||||
hname := highscoreM[1,2];
|
||||
highscore:=sprintf("%s",cat(hscore,"\n",hname));
|
||||
buttonpress:="False";
|
||||
a:=Matrix(4, 4, [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]):
|
||||
score:=0;
|
||||
matrixtotextarea(a);
|
||||
SP("Score/Lose",visible,true);
|
||||
SP("Score/Lose",enabled,true);
|
||||
SP("Score/Lose",caption,"Click an Arrow to begin.");
|
||||
SP("Score",value,score);
|
||||
SP("Highscore",value,highscore);
|
||||
SP(seq([j, enabled, false], j in ["Name","Enter"]));
|
||||
SP(seq([j, visible, false], j in ["Name","Enter"]));
|
||||
SP(seq([j, enabled, true], j in ["Score","Highscore", seq(cat("Button",k),k=0..4)]));
|
||||
SP(seq([j, visible, true], j in ["Score","Highscore", seq(cat("Button",k),k=0..4)]));
|
||||
end proc;
|
||||
|
||||
checklose:=proc();
|
||||
for q from 2 to 4 do
|
||||
for w from 4 to 1 by -1 do
|
||||
if a[q,w]=a[q-1,w] then
|
||||
loss:="False";
|
||||
return loss;
|
||||
end if;
|
||||
end do;
|
||||
end do;
|
||||
return loss;
|
||||
end proc;
|
||||
|
||||
f:=proc(keypress);
|
||||
SP("Score/Lose",visible,false);
|
||||
SP("Score/Lose",enabled,false);
|
||||
j := rand(1 .. 4);
|
||||
k := rand(1 .. 4);
|
||||
z := rand(1 .. 10);
|
||||
e := 0;
|
||||
move:=proc();
|
||||
for q from 4 to 2 by -1 do
|
||||
for w from 4 to 1 by -1 do
|
||||
if a[q,w]=a[q-1,w] then
|
||||
a[q-1,w]:=a[q-1,w]+a[q,w];
|
||||
score:=score+a[q-1,w];
|
||||
a[q,w]:=0;
|
||||
if q-1>1 and a[q-2,w]=0 then
|
||||
a[q-2,w]:=a[q-1,w];
|
||||
a[q-1,w]:=0;
|
||||
if q-2>1 and a[q-3,w]=0 then
|
||||
a[q-3,w]:=a[q-2,w];
|
||||
a[q-2,w]:=0;
|
||||
end if;
|
||||
end if;
|
||||
elif q-1>1 and a[q,w]=a[q-2,w] and a[q-1,w]=0 then
|
||||
a[q-2,w]:=a[q-2,w]+a[q,w];
|
||||
score:=score+a[q-2,w];
|
||||
a[q,w]:=0;
|
||||
if q-2>1 and a[q-3,w]=0 then
|
||||
a[q-3,w]:=a[q-2,w];
|
||||
a[q-2,w]:=0;
|
||||
end if;
|
||||
elif q-2>1 and a[q,w]=a[q-3,w] and a[q-1,w]=0 and a[q-2,w]=0 then
|
||||
a[q-3,w]:=a[q-3,w]+a[q,w];
|
||||
score:=score+a[q-3,w];
|
||||
a[q,w]:=0;
|
||||
elif a[q-1,w]=0 then
|
||||
a[q-1,w]:=a[q-1,w]+a[q,w];
|
||||
a[q,w]:=0;
|
||||
if q-1>1 and a[q-2,w]=0 then
|
||||
a[q-2,w]:=a[q-1,w];
|
||||
a[q-1,w]:=0;
|
||||
if q-2>1 and a[q-3,w]=0 then
|
||||
a[q-3,w]:=a[q-2,w];
|
||||
a[q-2,w]:=0;
|
||||
end if;
|
||||
end if;
|
||||
elif q-1>1 and a[q-2,w]=0 and a[q-1,w]=0 then
|
||||
a[q-2,w]:=a[q-2,w]+a[q,w];
|
||||
a[q,w]:=0;
|
||||
if q-2>1 and a[q-3,w]=0 then
|
||||
a[q-3,w]:=a[q-2,w];
|
||||
a[q-2,w]:=0;
|
||||
end if;
|
||||
elif q-2>1 and a[q-3,w]=0 and a[q-1,w]=0 and a[q-2,w]=0 then
|
||||
a[q-3,w]:=a[q-3,w]+a[q,w];
|
||||
a[q,w]:=0;
|
||||
end if;
|
||||
end do;
|
||||
end do;
|
||||
end proc;
|
||||
|
||||
r := j();
|
||||
c := k();
|
||||
if keypress="Up" then
|
||||
move();
|
||||
|
||||
elif keypress="Left" then
|
||||
a:=LinearAlgebra:-Transpose(a);
|
||||
move();
|
||||
a:=LinearAlgebra:-Transpose(a);
|
||||
|
||||
elif keypress="Right" then
|
||||
a := ArrayTools:-FlipDimension(LinearAlgebra:-Transpose(a),1);
|
||||
move();
|
||||
a := LinearAlgebra:-Transpose(ArrayTools:-FlipDimension(a,1));
|
||||
|
||||
elif keypress="Down" then
|
||||
a := ArrayTools:-FlipDimension(a, 1);
|
||||
move();
|
||||
a := ArrayTools:-FlipDimension(a, 1);
|
||||
end if;
|
||||
|
||||
if a[r, c] = 0 then
|
||||
if z() > 3 then
|
||||
a[r, c] := 2;
|
||||
else;
|
||||
a[r, c] := 4;
|
||||
end if;
|
||||
else
|
||||
for q to 4 do
|
||||
for w to 4 do
|
||||
if a[q, w] <> 0 then;
|
||||
e:=e+1;
|
||||
end if;
|
||||
end do;
|
||||
end do;
|
||||
if e = 16 then
|
||||
loss:="True";
|
||||
checklose();
|
||||
a:=LinearAlgebra:-Transpose(a);
|
||||
checklose();
|
||||
a:=LinearAlgebra:-Transpose(a);
|
||||
a := ArrayTools:-FlipDimension(LinearAlgebra:-Transpose(a),1);
|
||||
checklose();
|
||||
a := LinearAlgebra:-Transpose(ArrayTools:-FlipDimension(a,1));
|
||||
a := ArrayTools:-FlipDimension(a, 1);
|
||||
checklose();
|
||||
a := ArrayTools:-FlipDimension(a, 1);
|
||||
if loss="True" then
|
||||
SP("Score/Lose",visible,"True");
|
||||
SP("Score/Lose",enabled,"True");
|
||||
SP("Score/Lose",caption,"You Lose!");
|
||||
if score>hscore then
|
||||
SP("Score/Lose",caption,"Highscore! Enter your name below!");
|
||||
SP("Enter",caption,"Confirm");
|
||||
SP(seq([j, enabled, true], j in ["Name","Enter","Score/Lose"]));
|
||||
SP(seq([j, visible, true], j in ["Name","Enter","Score/Lose"]));
|
||||
SP(seq([j, enabled, false], j in [seq(cat("Button",k),k=0..4)]));
|
||||
SP(seq([j, visible, false], j in [seq(cat("Button",k),k=0..4)]));
|
||||
if buttonpress="True" then
|
||||
M:=Matrix(1, 2, [[score, hname]]):
|
||||
ExportMatrix("this:///Score.csv",M);
|
||||
buttonpress:="False";
|
||||
reset();
|
||||
end if;
|
||||
else
|
||||
SP("Score/Lose",caption,"Sorry, please try again.");
|
||||
SP("Enter",caption,"Restart");
|
||||
SP("Enter",visible,"True");
|
||||
SP("Enter",enabled,"True");
|
||||
SP(seq([j, enabled, false], j in [seq(cat("Button",k),k=0..4)]));
|
||||
SP(seq([j, visible, false], j in [seq(cat("Button",k),k=0..4)]));
|
||||
if buttonpress="True" then
|
||||
buttonpress:="False";
|
||||
reset();
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
else
|
||||
e:=0;
|
||||
while a[r, c] <> 0 do
|
||||
r := j();
|
||||
c := k();
|
||||
end do;
|
||||
if z() > 1 then
|
||||
a[r, c] := 2;
|
||||
else
|
||||
a[r, c] := 4;
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
matrixtotextarea(a);
|
||||
SP("Score",value,score,refresh);
|
||||
return a;
|
||||
end proc;
|
||||
end module;
|
||||
G:-reset();SP("Score/Lose",caption,"Click an Arrow to begin.");
|
||||
Loading…
Add table
Add a link
Reference in a new issue