☣☢
pascal吧
全部回复
仅看楼主
level 12
wfwhl12 楼主
我的第一个游戏就这样诞生了
简单得只用了一上午就弄出来了
看在我开源的分上就少喷点吧
USES crt,windows;
VAR
i,j,x,y:integer;
c:array[1..10,1..10]OF boolean;
ch:char;PROCEDURE print;
VAR i,j:integer;
BEGIN
clrscr;
FOR i:=1 TO 10 DO
BEGIN
FOR j:=1TO 10DO
BEGIN
IF (i=x)AND(j=y)
THEN BEGIN
textcolor(red);
IF c[i,j]
THEN write(chr(1),'<')
ELSE write(chr(2),'<')
END
ELSE BEGIN
textcolor(black);
IF c[i,j]
THEN write(chr(1),' ')
ELSE write(chr(2),' ')
END
END;
writeln
END;
writeln
END;
FUNCTION check():boolean;
VAR
i,j:integer;
BEGIN
FOR i:=1 TO 10 DO
FOR j:=1TO 10DO
IF c[i,j]
THEN check:=true
ELSE BEGIN
check:=false;
exit
END;
END;
PROCEDURE play;
BEGIN
ch:=readkey;
CASE ord(ch) OF
119:IF x>0THEN x:=x-1;
115:IF x<10THEN x:=x+1;
97:IF y>0THEN y:=y-1;
100:IF y<10THEN y:=y+1;
13:BEGIN
c[x+1,y]:=NOT c[x+1,y];
c[x,y]:=NOT c[x,y];
c[x-1,y]:=NOT c[x-1,y];
c[x,y+1]:=NOT c[x,y+1];
c[x,y-1]:=NOT c[x,y-1]
END
ELSE messagebox(0,'按错啦!',NIL,mb_ok)
END;
END;
BEGIN
textbackground(yellow);
x:=1;
y:=1;
FOR i:=1TO 10DO
FOR j:=1 TO 10 DO
c[i,j]:=false;
REPEAT
print;
play;
UNTIL check;
messagebox(0,'你赢了!','★胜利★',mb_ok)
END.
这是一个不知名的小游戏,游戏规则:
键盘‘
w'键向上移动箭头,‘
s’键向下移动,‘
a’向左移,‘
d’向右;
enter键选择,当全变成空心笑脸时,你就赢了!
Orz Orz Orz 度娘啊,你怎么把我的缩进都吃光了啊[怒]
2013年08月29日 07点08分 1
level 13
[不高兴]
2013年08月29日 07点08分 2
什么意思? [汗]
2013年08月29日 07点08分
level 12
wfwhl12 楼主
稍微更新了一下:
USES crt,windows;VAR i,j,x,y:integer; c:array[1..10,1..10]OF boolean; ch:char;PROCEDURE print; VAR i,j:integer; BEGIN clrscr; FOR i:=1 TO 10 DO BEGIN FOR j:=1TO 10DO BEGIN IF (i=x)AND(j=y) THEN BEGIN textcolor(red); IF c[i,j] THEN write('>',chr(1)) ELSE write('>',chr(2)) END ELSE BEGIN textcolor(black); IF c[i,j] THEN write(' ',chr(1)) ELSE write(' ',chr(2)) END END; writeln END; writeln END;FUNCTION check():boolean; VAR i,j:integer; BEGIN FOR i:=1 TO 10 DO FOR j:=1TO 10DO IF c[i,j] THEN check:=true ELSE BEGIN check:=false; exit END; END;PROCEDURE play; BEGIN ch:=readkey; CASE ord(ch) OF 119,72:IF x>1THEN x:=x-1; 115,80:IF x<10THEN x:=x+1; 97,75:IF y>1THEN y:=y-1; 100,77:IF y<10THEN y:=y+1; 13:BEGIN c[x+1,y]:=NOT c[x+1,y]; c[x,y]:=NOT c[x,y]; c[x-1,y]:=NOT c[x-1,y]; c[x,y+1]:=NOT c[x,y+1]; c[x,y-1]:=NOT c[x,y-1] END END; END;BEGIN textbackground(yellow); x:=1; y:=1; FOR i:=1TO 10DO FOR j:=1 TO 10 DO c[i,j]:=false; REPEAT print; play; UNTIL check; messagebox(0,'你赢了!','★胜利★',mb_ok)END.
2013年08月29日 07点08分 3
level 12
wfwhl12 楼主

完整版了:
USES crt,windows;VAR i,j,x,y:integer; c:array[0..31,0..31]OF boolean; n:longint; ch:char;PROCEDURE print; VAR i,j:integer; BEGIN clrscr; FOR i:=1 TO n DO BEGIN FOR j:=1TO n DO BEGIN IF (i=x)AND(j=y) THEN BEGIN textcolor(red); IF c[i,j] THEN write('>',chr(1)) ELSE write('>',chr(2)) END ELSE BEGIN textcolor(black); IF c[i,j] THEN write(' ',chr(1)) ELSE write(' ',chr(2)) END END; writeln END; writeln END;FUNCTION check():boolean; VAR i,j:integer; BEGIN FOR i:=1 TO n DO FOR j:=1TO n DO IF c[i,j] THEN check:=true ELSE BEGIN check:=false; exit END; END;PROCEDURE play; BEGIN ch:=readkey; CASE ord(ch) OF 119,72:IF x>1THEN x:=x-1; 115,80:IF x<n THEN x:=x+1; 97,75:IF y>1THEN y:=y-1; 100,77:IF y<n THEN y:=y+1; 13:BEGIN c[x+1,y]:=NOT c[x+1,y]; c[x,y]:=NOT c[x,y]; c[x-1,y]:=NOT c[x-1,y]; c[x,y+1]:=NOT c[x,y+1]; c[x,y-1]:=NOT c[x,y-1] END END; END;BEGIN textbackground(yellow); x:=1; y:=1; messagebox(0,' 请输入游戏难度:3~30 ',' 选择游戏难度 ',mb_ok); REPEAT readln(n); IF(n<3)OR(n>30) THEN messagebox(0,' 数据溢出! ',NIL,mb_ok) UNTIL(n>2)AND(n<31); FOR i:=1TO 30DO FOR j:=1 TO 30 DO c[i,j]:=false; REPEAT print; play; UNTIL check; messagebox(0,'你赢了!','★胜利★',mb_ok)END.
2013年08月29日 10点08分 4
1