亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unit1.~pas

?? 用delphi 7寫的貪食蛇游戲的源代碼
?? ~PAS
?? 第 1 頁 / 共 2 頁
字號:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, Menus, ImgList;

const
  glasswidth=30;
  glassheight=20;
  glasstop=10;
  glassleft=10;

  unitwidth=12;
  unitheight=12;

  gamelevel: array[1..6] of integer= (1000,500,250,100,70,40);
  gamescore: array[1..6] of integer= (5,10,15,20,25,30);
  specialscore=100;
type
  Tdirect= (none,mbup,mbdown,mbleft,mbright);

type
  TPosition= record
    x: byte;
    y: byte;
  end;

type
  Tmoving= record
    value: byte;
    direct: Tdirect;
  end;

type
  Tglasssheet= array[1..glasswidth,1..glassheight] of Tmoving;

var
  gamemap: array[1..2]of Tglasssheet;
  GlassWorkSheet: Tglasssheet;
  OldGlassWorkSheet: Tglasssheet;
  selectedmap: Tglasssheet;
  Headofsnake,Tailofsnake,special: Tposition;
  subsituteofhead: byte;
  originaldirect: Tdirect;
  cout: integer;
  currentlevel: integer;
  specialexit: boolean;
  specialtype: byte;
  gamestart: boolean;
  totalscore: integer;
  eatscore: integer;
  fackkey: word;
  fackShiftState: TShiftState;
  pause: boolean;

type
  TSnake = class(TForm)
    Movementtimer: TTimer;
    Gamerect: TBevel;
    btdown: TSpeedButton;
    btup: TSpeedButton;
    btleft: TSpeedButton;
    btright: TSpeedButton;
    btpause: TSpeedButton;
    btcontrol: TSpeedButton;
    Gameinfo: TGroupBox;
    level: TLabel;
    map: TLabel;
    score: TLabel;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    Specialfoodtimer: TTimer;
    gameimage: TImage;
    N8: TMenuItem;
    N21: TMenuItem;
    N31: TMenuItem;
    N41: TMenuItem;
    N51: TMenuItem;
    N61: TMenuItem;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    time: TLabel;
    Label4: TLabel;
    N11: TMenuItem;
    N22: TMenuItem;
    N9: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure MovementtimerTimer(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btcontrolClick(Sender: TObject);
    procedure SpecialfoodtimerTimer(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N21Click(Sender: TObject);
    procedure N31Click(Sender: TObject);
    procedure N41Click(Sender: TObject);
    procedure N51Click(Sender: TObject);
    procedure N61Click(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure N22Click(Sender: TObject);
    procedure btupClick(Sender: TObject);
    procedure btleftClick(Sender: TObject);
    procedure btdownClick(Sender: TObject);
    procedure btrightClick(Sender: TObject);
    procedure btpauseClick(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function Snakemove: Boolean;
    function nextposition(cur: Tposition): Tposition;
    procedure gamerepaint;
    procedure generatefood;
    procedure drawfood(x,y: byte);
    procedure initailizegame;
    procedure drawbody(x,y,value: byte);
    procedure drawwall(x,y: byte);
    procedure generatespecial;
    procedure drawspecial(x,y,value: byte);
    procedure drawhead(x,y,value: byte);
    procedure drawblank(x,y: byte);
    procedure drawcorner(x,y,value: byte);
    procedure drawtail(x,y,value: byte);
    procedure drawmouth(x,y,value: byte);
    procedure specialinbox;
    procedure generatesnake;
  end;

var
  Snake: TSnake;

implementation

uses Unit2;

{$R *.dfm}

procedure TSnake.FormCreate(Sender: TObject);
var
  i,j: byte;
begin
  for i := 1 to glasswidth do
  begin
    gamemap[2][i][1].value := 27;
    gamemap[2][i][glassheight].value := 27;
  end;
  for j := 1 to glassheight do
  begin
    gamemap[2][1][j].value := 27;
    gamemap[2][glasswidth][j].value := 27;
  end;
  move(gamemap[2],selectedmap,sizeof(selectedmap));
  label2.Caption := '地圖2';
  totalscore := 0;
  cout := 0;
  currentlevel := gamelevel[4];
  eatscore := gamescore[4];
  label1.Caption := '等級4';
  gamestart := false;
  pause := false;
  label3.Caption := '0';
  randomize;
end;

procedure TSnake.FormPaint(Sender: TObject);
var
  glassrect: TRect;
begin
  Canvas.Brush.Color:=clwhite;
  glassrect:=rect(glassleft,glasstop,glassleft+glasswidth*unitwidth,glasstop+glassheight*unitheight);
  Canvas.FillRect(glassrect);
end;

function TSnake.Snakemove: Boolean;
var
  Headnext,Tailnext,foresee: Tposition;
begin
  Snakemove := true;
  headnext := nextposition(headofsnake);
  Tailnext := nextposition(tailofsnake);
  case oldglassworksheet[headnext.x][headnext.y].value of
    0:
    begin
      glassworksheet[Tailofsnake.x][Tailofsnake.y].value :=0;
      with glassworksheet[tailnext.x][tailnext.y] do
      begin
        case direct of
          mbup: value := 10;
          mbdown: value := 12;
          mbleft: value := 9;
          mbright: value := 11;
        end;
      end;
      tailofsnake := tailnext;
      glassworksheet[headnext.x][headnext.y].direct := glassworksheet[headofsnake.x][headofsnake.y].direct;
      with glassworksheet[headnext.x][headnext.y] do
      begin
        case direct of
          mbup: value := 2;
          mbdown: value := 4;
          mbleft: value := 1;
          mbright: value := 3;
        end;
      end;
      with glassworksheet[headofsnake.x][headofsnake.y] do
      begin
        case direct of
          mbup:
            case originaldirect of
              mbup: subsituteofhead := 17;
              mbdown: subsituteofhead := 17;
              mbleft: subsituteofhead := 16;
              mbright: subsituteofhead := 15;
            end;
          mbdown:
            case originaldirect of
              mbup: subsituteofhead := 17;
              mbdown: subsituteofhead := 17;
              mbleft: subsituteofhead := 13;
              mbright: subsituteofhead := 14;
            end;
          mbleft:
            case originaldirect of
              mbup: subsituteofhead := 14;
              mbdown: subsituteofhead := 15;
              mbleft: subsituteofhead := 18;
              mbright: subsituteofhead := 18;
            end;
          mbright:
            case originaldirect of
              mbup: subsituteofhead := 13;
              mbdown: subsituteofhead := 16;
              mbleft: subsituteofhead := 18;
              mbright: subsituteofhead := 18;
            end;
          end;
        end;
      glassworksheet[headofsnake.x][headofsnake.y].value := subsituteofhead;
      headofsnake := headnext;
      originaldirect := glassworksheet[headofsnake.x][headofsnake.y].direct;
    end;
    1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,27:
    begin
      Snakemove := false;
      exit;
    end;
    26:
    begin
      inc(totalscore,eatscore);
      generatefood;
      glassworksheet[headnext.x][headnext.y].direct := glassworksheet[headofsnake.x][headofsnake.y].direct;
      with glassworksheet[headnext.x][headnext.y] do
      begin
        case direct of
          mbup: value := 2;
          mbdown: value := 4;
          mbleft: value := 1;
          mbright: value := 3;
        end;
      end;
      with glassworksheet[headofsnake.x][headofsnake.y] do
      begin
        case direct of
          mbup,mbdown: subsituteofhead := 19;
          mbleft,mbright: subsituteofhead := 20;
        end;
      end;
      glassworksheet[headofsnake.x][headofsnake.y].value := subsituteofhead;
      originaldirect := glassworksheet[headofsnake.x][headofsnake.y].direct;
      headofsnake := headnext;
    end;
    21,22,23,24,25:
    begin
      glassworksheet[headnext.x][headnext.y].direct := glassworksheet[headofsnake.x][headofsnake.y].direct;
      with glassworksheet[headnext.x][headnext.y] do
      begin
        case direct of
          mbup: value := 2;
          mbdown: value := 4;
          mbleft: value := 1;
          mbright: value := 3;
        end;
      end;
      with glassworksheet[headofsnake.x][headofsnake.y] do
      begin
        case direct of
          mbup,mbdown: subsituteofhead := 19;
          mbleft,mbright: subsituteofhead := 20;
        end;
      end;
      glassworksheet[headofsnake.x][headofsnake.y].value := subsituteofhead;
      originaldirect := glassworksheet[headofsnake.x][headofsnake.y].direct;
      headofsnake := headnext;
    end;
  end;
  foresee := nextposition(headofsnake);
  if glassworksheet[foresee.x][foresee.y].value > 0 then
    with glassworksheet[headofsnake.x][headofsnake.y] do
      case direct of
        mbup: value := 6;
        mbdown: value := 8;
        mbleft: value := 5;
        mbright: value := 7;
      end;
end;

function TSnake.nextposition(cur: Tposition): Tposition;
begin
  case glassworksheet[cur.x][cur.y].direct of
    mbright: cur.x := Cur.x + 1;
    mbdown: cur.y := Cur.y + 1;
    mbleft: cur.x := Cur.x - 1;
    mbup: cur.y := Cur.y - 1;
    none: ;
  end;
  if cur.x = glasswidth + 1 then
    cur.x := 1;
  if cur.x = 0 then
    cur.x := glasswidth;
  if cur.y = glassheight + 1 then
    cur.y := 1;
  if cur.y = 0 then
    cur.y := glassheight;
  nextposition := cur;
end;

procedure TSnake.gamerepaint;
var
  i,j:byte;
begin
  for i := 1 to glasswidth do
    for j := 1 to glassheight do
    begin
      if oldglassworksheet[i][j].value<>glassworksheet[i][j].value then
      begin
        case glassworksheet[i][j].value of
          0: drawblank(i,j);
          1,2,3,4: drawhead(i,j,glassworksheet[i][j].value);
          5,6,7,8: drawmouth(i,j,glassworksheet[i][j].value - 4);
          9,10,11,12: drawtail(i,j,glassworksheet[i][j].value - 8);
          13,14,15,16: drawcorner(i,j,glassworksheet[i][j].value - 12);
          17,18,19,20: drawbody(i,j,glassworksheet[i][j].value - 16);
          21,22,23,24,25: drawspecial(i,j,glassworksheet[i][j].value - 20);
          26:
          begin
            drawfood(i,j);
            label3.Caption := inttostr(totalscore);
          end;
          27: drawwall(i,j);
        end;
      end;
    end;
end;

procedure TSnake.MovementtimerTimer(Sender: TObject);
begin
  if not snakemove then
  begin
    movementtimer.Enabled := false;
    messagedlg('Game Over',mtinformation,[mbok],0);
  end
  else
  begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区三区在线观看 | 国产亚洲精品aa| 免费美女久久99| 欧美一区二区三区系列电影| 蜜桃一区二区三区在线观看| 日韩欧美成人激情| 国产精品亚洲人在线观看| 亚洲国产精品二十页| 色一情一伦一子一伦一区| 亚洲成人综合在线| 欧美成人艳星乳罩| 福利91精品一区二区三区| 国产精品国产三级国产| 欧美在线免费观看亚洲| 麻豆一区二区三| 国产精品久久毛片a| 欧美日韩和欧美的一区二区| 黄一区二区三区| 中文字幕一区二区三中文字幕| 色天天综合色天天久久| 蜜臀久久久99精品久久久久久| 久久久精品日韩欧美| 色婷婷av一区二区三区大白胸| 日韩av不卡在线观看| 久久精品一区二区| 在线观看免费一区| 国产资源精品在线观看| 亚洲免费在线播放| 精品奇米国产一区二区三区| av亚洲精华国产精华精| 男人的j进女人的j一区| 国产精品视频观看| 欧美一区二区视频网站| k8久久久一区二区三区 | 欧美在线一二三四区| 国产在线一区二区| 性做久久久久久免费观看 | 最新热久久免费视频| 欧美一级免费大片| 91女厕偷拍女厕偷拍高清| 久久99精品久久久久婷婷| 亚洲精品综合在线| 欧美激情在线一区二区| 在线播放欧美女士性生活| 99免费精品视频| 极品尤物av久久免费看| 亚洲午夜羞羞片| 国产精品人成在线观看免费| 日韩一区二区三区电影| 在线观看不卡视频| 成人av资源在线观看| 日韩avvvv在线播放| 亚洲一区二区综合| 一区精品在线播放| 国产亚洲欧洲997久久综合| 欧美伦理影视网| 在线观看亚洲a| 色综合av在线| 97精品久久久午夜一区二区三区 | 从欧美一区二区三区| 久久99国产精品久久99果冻传媒| 亚洲第一福利一区| 一区二区国产盗摄色噜噜| 国产精品对白交换视频 | 国产精品综合一区二区| 久久精品国产在热久久| 日本在线观看不卡视频| 五月婷婷欧美视频| 亚洲va国产天堂va久久en| 亚洲美女免费视频| √…a在线天堂一区| 国产精品区一区二区三| 国产精品久久久久久久久快鸭| 久久伊人中文字幕| 精品日韩一区二区三区| 欧美成人精品1314www| 日韩午夜激情av| 日韩免费一区二区| 日韩视频免费观看高清完整版在线观看 | 国产片一区二区三区| 国产亚洲一区二区三区四区 | 一区二区三区四区精品在线视频| 国产精品精品国产色婷婷| 中文字幕一区日韩精品欧美| 亚洲欧洲另类国产综合| 亚洲精品乱码久久久久久黑人| 亚洲免费观看高清在线观看| 亚洲精品乱码久久久久久| 午夜亚洲福利老司机| 日本不卡不码高清免费观看| 久久不见久久见免费视频7| 国产精品一区在线观看乱码| 国产激情视频一区二区在线观看| 国产成人av电影在线播放| av激情综合网| 欧美性大战久久| 日韩写真欧美这视频| 国产亚洲va综合人人澡精品 | 久久精品综合网| 亚洲天堂2014| 亚洲福利一区二区三区| 久久国产夜色精品鲁鲁99| 成人爽a毛片一区二区免费| 91丨porny丨国产入口| 欧美日韩高清一区| 久久婷婷成人综合色| 亚洲欧洲韩国日本视频| 图片区小说区区亚洲影院| 精品一区二区三区在线视频| 成人性色生活片| 欧美人妖巨大在线| 久久精品亚洲精品国产欧美| 亚洲欧美电影院| 捆绑紧缚一区二区三区视频| 成人精品在线视频观看| 精品视频一区二区不卡| 久久欧美中文字幕| 亚洲美女在线一区| 国产精品亚洲第一| 欧美老肥妇做.爰bbww视频| 久久久亚洲精品石原莉奈| 亚洲一卡二卡三卡四卡无卡久久| 精品一区二区三区久久久| 99国产一区二区三精品乱码| 欧美一级高清片在线观看| 亚洲色图制服丝袜| 精品在线一区二区三区| 色久优优欧美色久优优| 久久久久久久电影| 亚洲成av人片在线| 99久久精品国产观看| 日韩欧美一级二级| 亚洲一二三四久久| 成人av在线网| 久久久青草青青国产亚洲免观| 亚洲成a天堂v人片| 91在线云播放| 国产日韩欧美精品在线| 日韩av一区二区三区四区| 91蜜桃网址入口| 国产午夜精品久久久久久久| 日韩一区精品字幕| 色呦呦国产精品| 中文字幕成人av| 国产麻豆91精品| 欧美成人午夜电影| 琪琪久久久久日韩精品| 欧美在线观看你懂的| 日韩一区欧美一区| thepron国产精品| 日本一区二区三区国色天香| 久久成人精品无人区| 欧美一卡2卡3卡4卡| 午夜精品久久久久久久99樱桃| 欧美性大战久久久久久久| 亚洲九九爱视频| 日本黄色一区二区| 亚洲男人的天堂一区二区| 9i看片成人免费高清| 欧美韩国日本一区| 粉嫩av亚洲一区二区图片| 国产色产综合产在线视频| 国产在线一区观看| 久久午夜老司机| 国产ts人妖一区二区| 国产拍欧美日韩视频二区| 国产综合久久久久久久久久久久| 精品剧情在线观看| 久久99精品久久久久久动态图| 欧美成人伊人久久综合网| 免费一级片91| 久久久三级国产网站| 成人av免费观看| 亚洲免费av高清| 欧美久久婷婷综合色| 日韩精品一区第一页| 日韩三级在线观看| 国产一区在线观看麻豆| 久久久三级国产网站| 成人av网站在线观看| 一区二区三区在线视频观看| 欧美性xxxxxx少妇| 日韩av一区二区三区| 久久色成人在线| 成人97人人超碰人人99| 亚洲日本成人在线观看| 欧美日韩久久久一区| 免费av网站大全久久| 久久人人超碰精品| 99久久伊人精品| 亚洲国产视频在线| 欧美成人三级在线| 99视频在线精品| 日韩精品一级二级| 久久久久久亚洲综合影院红桃| 97久久超碰国产精品| 亚洲成人av在线电影| 久久蜜桃一区二区| 91美女蜜桃在线| 久久se这里有精品|