感谢格致杭业晟同学改进完善

uses crt;
var
  i,j,k,ls,x,y:byte;
  b:array[0..11,0..11] of shortint;
  f:array[0..11,0..11] of boolean;
  c:char;
procedure a;  //光标往左
begin
  gotoxy((x+2)*2,y+3);  //恢复上一个位置
  if f[y+1,x+1] then write(b[y+1,x+1])
                else write('?');
  if x=0 then x:=9
         else x:=x-1;
  textbackground(white);  //更新新位置
  textcolor(black);
  gotoxy((x+2)*2,y+3);
  if f[y+1,x+1] then write(b[y+1,x+1])
                else write('?');
  textbackground(black);
  textcolor(white);
end;
procedure w;
begin
  gotoxy((x+2)*2,y+3);
  if f[y+1,x+1] then write(b[y+1,x+1])
                else write('?');
  if y=0 then y:=9
         else y:=y-1;
  textbackground(white);
  textcolor(black);
  gotoxy((x+2)*2,y+3);
  if f[y+1,x+1] then write(b[y+1,x+1])
                else write('?');
  textbackground(black);
  textcolor(white);
end;
procedure d;
begin
  gotoxy((x+2)*2,y+3);
  if f[y+1,x+1] then write(b[y+1,x+1])
                else write('?');
  if x=9 then x:=0
         else x:=x+1;
  textbackground(white);
  textcolor(black);
  gotoxy((x+2)*2,y+3);
  if f[y+1,x+1] then write(b[y+1,x+1])
                else write('?');
  textbackground(black);
  textcolor(white);
end;
procedure s;
begin
  gotoxy((x+2)*2,y+3);
  if f[y+1,x+1] then write(b[y+1,x+1])
                else write('?');
  if y=9 then y:=0
         else y:=y+1;
  textbackground(white);
  textcolor(black);
  gotoxy((x+2)*2,y+3);
  if f[y+1,x+1] then write(b[y+1,x+1])
                else write('?');
  textbackground(black);
  textcolor(white);
end;
begin
  clrscr;
  cursoroff;
  fillchar(f,sizeof(f),false);
  randomize;
  for i:=1 to 10 do  //随机生成地雷(10%,-1表示地雷格),并统计地雷个数
    for j:=1 to 10 do begin
      k:=random(10);
      if k=0 then b[i,j]:=-1
             else b[i,j]:=0;
      if b[i,j]=-1 then inc(ls);
    end;

for i:=1 to 10 do  //计算非地雷格周边的地雷数
    for j:=1 to 10 do
      if b[i,j]=0 then begin
        if b[i-1,j-1]=-1 then inc(b[i,j]);
        if b[i-1,j]=-1 then inc(b[i,j]);
        if b[i-1,j+1]=-1 then inc(b[i,j]);
        if b[i,j-1]=-1 then inc(b[i,j]);
        if b[i,j+1]=-1 then inc(b[i,j]);
        if b[i+1,j-1]=-1 then inc(b[i,j]);
        if b[i+1,j]=-1 then inc(b[i,j]);
        if b[i+1,j+1]=-1 then inc(b[i,j]);
      end;
  writeln('   0 1 2 3 4 5 6 7 8 9');  //输出初始界面
  writeln(' .--------------------.');
  for i:=1 to 10 do begin
    write(i-1,'|');
    for j:=1 to 10 do write(' ?');
    write('|');
    writeln;
  end;
  writeln(' .-------------------.');

x:=0;  //光标定位到左上角
  y:=0;
  textbackground(white);
  textcolor(black);
  gotoxy((x+2)*2,y+3);
  write('?');
  textbackground(black);
  textcolor(white);
  while (100-ls)>0 do  //扫雷开始
    if keypressed then begin
      c:=readkey;
      if c='w' then w;
      if c='a' then a;
      if c='s' then s;
      if c='d' then d;
      if c=' ' then  //如果按空格
        if b[y+1,x+1]=-1 then begin  //如果这格是地雷
          clrscr;
          textcolor(lightred);
          writeln('Bomb! You Lose!');
          writeln('Press Enter to Exit');
          readln;
          exit;
        end
        else begin  //如果这格不是地雷
          textbackground(white);
          textcolor(black);
          gotoxy((x+2)*2,y+3);
          write(b[y+1,x+1]);
          textbackground(black);
          textcolor(white);
          f[y+1,x+1]:=true;
          inc(ls);
        end;
  end;
  clrscr;
  textcolor(yellow);
  writeln('You Win!');
  writeln('Press Enter to Exit');
  readln;
end.

扫地雷II的更多相关文章

  1. Pascal语言(存档)

    数据类型 标准函数 运算符和表达式 输入语句 输出语句 if语句 case语句 for语句 while语句 repeat语句 函数与过程 形参与实参 全局变量与局部变量 数组 字符串 枚举 子界 集合 ...

  2. [SDFZOJ]1069:树上统计

    神题...std丑的不行. 我们可以发现i->i+1的边被覆盖过i×(n-i)次. 因为以1->i为左端点,以i+1->n的为右端点,i->i+1都将被覆盖这么多次. 然后从1 ...

  3. 洛谷P1372 又是毕业季I&&P1414 又是毕业季II[最大公约数]

    P1372 又是毕业季I 题目背景 “叮铃铃铃”,随着高考最后一科结考铃声的敲响,三年青春时光顿时凝固于此刻.毕业的欣喜怎敌那离别的不舍,憧憬着未来仍毋忘逝去的歌.1000多个日夜的欢笑和泪水,全凝聚 ...

  4. Android安全开发之WebView中的地雷

    Android安全开发之WebView中的地雷 0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者 ...

  5. [LeetCode] Palindrome Partitioning II 解题笔记

    Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...

  6. LeetCode :Word Ladder II My Solution

    Word Ladder II Total Accepted: 11755 Total Submissions: 102776My Submissions Given two words (start  ...

  7. 2020: [Usaco2010 Jan]Buying Feed, II

    2020: [Usaco2010 Jan]Buying Feed, II Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 220  Solved: 162[ ...

  8. [leetcode]Weekly Contest 68 (767. Reorganize String&&769. Max Chunks To Make Sorted&&768. Max Chunks To Make Sorted II)

    766. Toeplitz Matrix 第一题不说,贼麻瓜,好久没以比赛的状态写题,这个题浪费了快40分钟,我真是...... 767. Reorganize String 就是给你一个字符串,能不 ...

  9. LeetCode: Jump Game II 解题报告

    Jump Game II Given an array of non-negative integers, you are initially positioned at the first inde ...

随机推荐

  1. 【62测试】【状压dp】【dfs序】【线段树】

    第一题: 给出一个长度不超过100只包含'B'和'R'的字符串,将其无限重复下去. 比如,BBRB则会形成 BBRBBBRBBBRB 现在给出一个区间[l,r]询问该区间内有多少个字符'B'(区间下标 ...

  2. STC12C5A60S2 常用的中断源和相关寄存器

    1) 中断源 STC12C5A60S2共有十个中断源,每个中断源可设置4类优先级:当相同优先级下各中断优先级由高到低依次如下: 1.1)INT0(外部中断0) 中断向量地址 0003H, C语言编程: ...

  3. ios中tableSection的颜色

    ios中tableSection的颜色可以用: @"0xf5f5f5",有个第三方库 #import "UIColor+expanded.h"可以支持十六进制取 ...

  4. iOS 利用 Framework 进行动态更新

    http://nixwang.com/2015/11/09/ios-dynamic-update/ 前言 目前 iOS 上的动态更新方案主要有以下 4 种: HTML 5 lua(wax)hotpat ...

  5. Turing Tree_线段树&树状数组

    Problem Description After inventing Turing Tree, 3xian always felt boring when solving problems abou ...

  6. LintCode Search a 2D Matrix II

    排好序的二维数组, 从上到下从左到右增大, 给出一个数找出此数组里有多少个这个数. 不用两个循环做, 着手于条件(从左下角开始,若相等往右上跳一个,若小于target往右边跳一个,若大于target往 ...

  7. kernel/Makefile

    ## Makefile for the linux kernel.## Note! Dependencies are done automagically by 'make dep', which a ...

  8. ODOO 源代码安装要求

    ODOO 源代码安装要求 ref:http://www.odoo.com/documentation/10.0/setup/install.html#setup-install-source pyth ...

  9. 在Linux系统中如何设置APACHE服务器里的后台页面只允许某个IP地址访问

    补充资料 本网络中使用LINUX服务器,web服务器是由APACHE搭建,IP地址为192.168.1.5,后台页面为/admin/login.jsp . 如何设置后台页面LOGIN.JSP只允许19 ...

  10. linux 给文件夹权限

    用的thinkphp3.2的框架,在本地运行没有问题,部署到服务器上(基于centos的LAMP环境)即报错_STORAGE_WRITE_ERROR_:./Application/Runtime/Ca ...