回 帖 发 新 帖 刷新版面

主题:请问谁可以教我编一个这样的小程序

谁能教我做一个这样的游戏?能详细点更好,感谢万分
一个三行三列的表格  输入三个不同的数字 使得表格的每个竖行 横行 还有斜行 它们的和相等就胜利 否则失败。

回复列表 (共6个回复)

沙发

拜托高手了

板凳

基本思路就是先接受输入,把每个竖行 横行 还有斜行上的数的和算出来,最后判断是否相等就行了.

源代码:

program game;
var
  board:array[1..3,1..3] of integer;
  i,j:integer;

function win:boolean;
var
  ans:boolean;
  a:array[1..8] of integer;
  i,j:byte;
begin
  for i:=1 to 8 do a[i]:=0;
  for i:=1 to 3 do
  begin
    a[1]:=a[1]+board[i,1];
    a[2]:=a[2]+board[i,2];
    a[3]:=a[3]+board[i,3];
    a[4]:=a[4]+board[1,i];
    a[5]:=a[5]+board[2,i];
    a[6]:=a[6]+board[3,i];
    a[7]:=a[7]+board[i,i];
    a[8]:=a[8]+board[i,4-i];
  end;
  ans:=true;
  for i:=1 to 7 do
    for j:=(i+1) to 8 do
      if a[i]<>a[j] then ans:=false;
  win:=ans;
end;

begin
  {input}
  for i:=1 to 3 do
    for j:=1 to 3 do read(board[i,j]);

  {work and output}
  if win then writeln('You are winner !!')
  else writeln('You are loser !!');
end.

3 楼

太感谢了 

4 楼

 谢谢   如果我想把它输入一个数就显示一次9行9列的表格并填入数据
应该怎么改好呢?

5 楼

begin
  {input}
  for i:=1 to 3 do
    for j:=1 to 3 do begin
                     Writeln('Please input ',i,j);
                     read(board[i,j]);
                     Writeln(board[1,1],'|',board[1,2],'|',board[1,3]);
                     Writeln('-----');
                     Writeln(board[2,1],'|',board[2,2],'|',board[2,3]);
                     Writeln('-----');
                     Writeln(board[3,1],'|',board[3,2],'|',board[3,3]);
                     end;
  
这样可以吗? 谢谢谢谢 感恩 游侠UFO

6 楼

基本上是正确的!
如果把:Writeln('Please input ',i,j);
改成:Writeln('Please input (',i,',',j,')');
效果会好些,呵呵!

我来回复

您尚未登录,请登录后再回复。点此登录或注册