亚洲欧美第一页_禁久久精品乱码_粉嫩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);
  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

{$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);
  initailizegame;
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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一级二级三级| 日本久久电影网| 国产精品66部| 91女神在线视频| 日韩一区二区在线看片| 亚洲欧美日韩在线播放| 久久精品国产一区二区三| 色欧美88888久久久久久影院| 日韩女优视频免费观看| 国产精品一区二区视频| 亚洲国产精品t66y| 日韩激情中文字幕| 99国产精品久久久| 国产日本亚洲高清| 久久99精品国产91久久来源| 欧美精品成人一区二区三区四区| 综合激情网...| 成人sese在线| 久久久久久久久久久久久夜| 日韩在线卡一卡二| 久久亚洲精精品中文字幕早川悠里| 调教+趴+乳夹+国产+精品| 欧美亚洲国产一区在线观看网站| 中文字幕色av一区二区三区| 成人午夜视频免费看| 久久久久久免费| 一本一道波多野结衣一区二区| 日韩经典一区二区| 欧美国产综合色视频| 色噜噜久久综合| 黄网站免费久久| 2021国产精品久久精品| 91小视频在线免费看| 久久成人免费网| 亚洲免费观看在线视频| 日韩欧美不卡在线观看视频| 一本一本大道香蕉久在线精品| 日韩不卡一二三区| 精品欧美久久久| 国产一区二区伦理| 国产欧美一区二区三区鸳鸯浴| 欧美在线观看18| 视频一区中文字幕| 国产精品美女久久久久av爽李琼| 本田岬高潮一区二区三区| 亚洲视频一区在线观看| 日韩女优电影在线观看| 欧美亚洲国产怡红院影院| 不卡av在线免费观看| 美女视频一区在线观看| 欧美激情综合网| 91精品国产福利在线观看| 国产一区欧美日韩| 丝袜诱惑亚洲看片| 一区二区国产视频| 日韩一级大片在线观看| 在线亚洲一区二区| 成人听书哪个软件好| 黑人精品欧美一区二区蜜桃 | 欧美情侣在线播放| 日韩制服丝袜av| 亚洲人xxxx| 日本一区二区三区免费乱视频| 日韩欧美亚洲国产精品字幕久久久 | 亚洲欧美另类图片小说| www久久久久| 欧美不卡一区二区三区四区| 欧美高清dvd| 欧美日韩精品一区二区在线播放| 99re成人精品视频| av一区二区三区黑人| 粉嫩aⅴ一区二区三区四区| 亚洲综合免费观看高清完整版在线 | 99久久er热在这里只有精品15| 国产麻豆欧美日韩一区| 精品一区二区精品| 久久99国产精品免费| 高清av一区二区| 九色|91porny| 国产一区二区三区精品欧美日韩一区二区三区 | 色www精品视频在线观看| 成人avav影音| 成人a免费在线看| www.成人在线| 99综合电影在线视频| 成人涩涩免费视频| av午夜精品一区二区三区| 波多野结衣一区二区三区| hitomi一区二区三区精品| youjizz久久| 91黄色免费观看| 欧美日韩亚洲另类| 国产精品一区二区三区网站| 国产在线日韩欧美| 国产传媒欧美日韩成人| 免费黄网站欧美| 亚洲一区二区三区影院| 日韩国产在线观看| 久久9热精品视频| 国产成人啪免费观看软件| www.av亚洲| 777午夜精品免费视频| 日韩欧美电影一区| 久久精品人人爽人人爽| 日韩免费看网站| 国产精品视频免费看| 亚洲精品日日夜夜| 成人免费在线播放视频| 亚洲成人免费在线| 亚洲高清免费观看| 香蕉久久一区二区不卡无毒影院| 蜜乳av一区二区三区| 国产成都精品91一区二区三| 色94色欧美sute亚洲13| 精品国产乱码久久久久久蜜臀| 欧美一区二区三区在线| 中文字幕高清一区| 图片区小说区区亚洲影院| 国内欧美视频一区二区| 色丁香久综合在线久综合在线观看| 欧美猛男超大videosgay| 久久久99精品免费观看不卡| 最新久久zyz资源站| 日本不卡一区二区三区 | 免费日本视频一区| 成人午夜视频网站| 欧美一级高清片| 中文字幕日韩一区二区| 极品美女销魂一区二区三区| 色婷婷综合五月| 久久婷婷国产综合国色天香 | 久久综合色鬼综合色| 一区二区三区资源| 国产精品主播直播| 欧美日韩二区三区| 国产精品福利在线播放| 欧美国产日本韩| 蜜桃91丨九色丨蝌蚪91桃色| 欧美亚洲高清一区| 国产精品色呦呦| 精品一区二区在线看| 欧美日韩精品一区二区| 亚洲精品视频在线| 成人午夜在线视频| 精品国产91乱码一区二区三区| 亚洲午夜影视影院在线观看| 不卡的av网站| 国产日韩视频一区二区三区| 美女在线一区二区| 欧美日韩免费不卡视频一区二区三区 | 麻豆精品国产91久久久久久| 精品视频在线免费看| 亚洲视频一二区| 春色校园综合激情亚洲| 久久综合丝袜日本网| 久久99精品国产麻豆婷婷| 日韩欧美资源站| 日韩成人免费在线| 欧美群妇大交群中文字幕| 亚洲制服丝袜一区| 在线亚洲一区观看| 亚洲一本大道在线| 色婷婷av一区二区三区gif | 精品一区二区三区在线观看| 欧美日韩日日摸| 亚洲香蕉伊在人在线观| 欧美探花视频资源| 一区二区三区视频在线看| 成人aaaa免费全部观看| 国产精品家庭影院| 波多野结衣一区二区三区| 国产精品美女久久久久久久久久久| 国产91精品露脸国语对白| 欧美激情中文不卡| 99久久婷婷国产综合精品电影| 国产午夜亚洲精品羞羞网站| 国产精品一区二区男女羞羞无遮挡 | 久久久亚洲精品石原莉奈| 韩国av一区二区三区| 国产免费观看久久| 色婷婷av一区二区三区gif| 亚洲国产精品一区二区www在线| 欧美日韩国产首页| 青青青伊人色综合久久| 26uuu久久天堂性欧美| 国产一区欧美二区| 国产精品乱人伦中文| 欧美亚州韩日在线看免费版国语版| 亚洲午夜精品17c| 欧美成人精品福利| 国产成人亚洲综合a∨婷婷图片| 中文字幕中文字幕一区| 欧美亚洲丝袜传媒另类| 日本aⅴ精品一区二区三区 | 亚洲理论在线观看| 5858s免费视频成人| 国产一区二区三区免费| 亚洲日本在线观看| 欧美一区二区久久| 国产成a人亚洲精品|