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

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

?? unit1.pas

?? 用delphi 7寫的貪食蛇游戲的源代碼
?? PAS
字號:
unit Unit1;

interface

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

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

const
  glasswidth=30;
  glassheight=20;
  glasstop=6;
  glassleft=5;

  unitwidth=12;
  unitheight=12;

var
  GlassWorkSheet: array[1..glasswidth,1..glassheight] of byte;
  OldGlassWorkSheet: array[1..glasswidth,1..glassheight] of byte;
  Headofsnake,Tailofsnake: Tposition;
  Direction: byte;

type
  TSnake = class(TForm)
    Movementtimer: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormClick(Sender: TObject);
    procedure MovementtimerTimer(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
    function Snakemove: Boolean;
    function nextposition(curposition: Tposition; value: byte): Tposition;
    procedure gamerepaint;
    procedure generatefood;
    procedure drawfood(x,y: byte);
    procedure initailizegame;
    procedure drawbody(x,y: byte);
    procedure drawwall(x,y: byte);
  end;

var
  Snake: TSnake;

implementation

{$R *.dfm}

procedure TSnake.FormCreate(Sender: TObject);
begin
  FillChar(GlassWorkSheet,sizeof(GlassWorksheet),0);
  FillChar(OldGlassWorkSheet,sizeof(OldGlassWorksheet),0);
  glassworksheet[12][3] := 1;
  glassworksheet[11][3] := 1;
  glassworksheet[10][3] := 1;
  glassworksheet[9][3] := 1;
  glassworksheet[16][12] := 6;
  move(glassworksheet,oldglassworksheet,sizeof(glassworksheet));
  headofsnake.x := 12;
  headofsnake.y := 3;
  tailofsnake.x := 9;
  tailofsnake.y := 3;
  direction := 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;

procedure TSnake.FormClick(Sender: TObject);
var
  num: byte;
begin
  num := 0;
  dec(num);
  messagedlg(inttostr(num),mtconfirmation,[mbok],0);
end;

function TSnake.Snakemove: Boolean;
var
  Headnext,Tailnext: Tposition;
begin
  Snakemove := true;
  headnext := nextposition(headofsnake,oldglassworksheet[headofsnake.x][headofsnake.y]);
  Tailnext := nextposition(Tailofsnake,oldglassworksheet[Tailofsnake.x][Tailofsnake.y]);
  case oldglassworksheet[headnext.x][headnext.y] of
    0:
    begin
      glassworksheet[Tailofsnake.x][Tailofsnake.y] :=0;
      tailofsnake := tailnext;
      glassworksheet[headnext.x][headnext.y] := glassworksheet[headofsnake.x][headofsnake.y];
      headofsnake := headnext;
    end;
    1,2,3,4,5:
    begin
      Snakemove := false;
      exit;
    end;
    6:
    begin
      generatefood;
      glassworksheet[headnext.x][headnext.y] := glassworksheet[headofsnake.x][headofsnake.y];
      headofsnake := headnext;
    end;
  end;
end;

function TSnake.nextposition(CurPosition: Tposition; value: byte): Tposition;
begin
  case value of
    1: curposition.x := Curposition.x + 1;
    2: curposition.y := Curposition.y + 1;
    3: curposition.x := Curposition.x - 1;
    4: curposition.y := Curposition.y - 1;
  end;
  if curposition.x = glasswidth + 1 then  curposition.x := 1;
  if curposition.x = 0 then curposition.x := glasswidth;
  if curposition.y = glassheight + 1 then curposition.y := 1;
  if curposition.y = 0 then curposition.y := glassheight;
  nextposition.x := Curposition.x;
  nextposition.y := Curposition.y;
end;

procedure TSnake.gamerepaint;
var
  i,j:byte;
  glassrect:TRect;
begin
  for i := 1 to glasswidth do
    for j := 1 to glassheight do
    begin
      if oldglassworksheet[i][j]<>glassworksheet[i][j] then
      begin
        case glassworksheet[i][j] of
          0:
          begin
            glassrect:=rect(glassleft+(i-1)*unitwidth,glasstop+(j-1)*unitheight,glassleft+i*unitwidth,glasstop+j*unitheight);
            canvas.Brush.Color := clwhite;
            canvas.FillRect(glassrect);
            oldglassworksheet[i][j] := 0;
          end;
          1,2,3,4:
          begin
            glassrect:=rect(glassleft+(i-1)*unitwidth,glasstop+(j-1)*unitheight,glassleft+i*unitwidth,glasstop+j*unitheight);
            canvas.Brush.Color := clblack;
            canvas.FillRect(glassrect);
            oldglassworksheet[i][j] := glassworksheet[i][j];
          end;
          6: drawfood(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
    gamerepaint;
    move(glassworksheet,oldglassworksheet,sizeof(glassworksheet));
  end;
end;

procedure TSnake.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
    vk_up: direction := 4;
    vk_down: direction := 2;
    vk_left: direction := 3;
    vk_right: direction := 1;
  end;
  if (oldglassworksheet[headofsnake.x][headofsnake.y] = 2) and (direction = 4) then exit;
  if (oldglassworksheet[headofsnake.x][headofsnake.y] = 4) and (direction = 2) then exit;
  if (oldglassworksheet[headofsnake.x][headofsnake.y] = 3) and (direction = 1) then exit;
  if (oldglassworksheet[headofsnake.x][headofsnake.y] = 1) and (direction = 3) then exit;
  oldglassworksheet[headofsnake.x][headofsnake.y] := direction;
  move(oldglassworksheet,glassworksheet,sizeof(glassworksheet));
end;

procedure TSnake.generatefood;
var
  i,j:byte;
begin
  repeat
    i := random(glasswidth) + 1;
    j := random(glassheight) + 1;
  until (oldglassworksheet[i][j] = 0) and (glassworksheet[i][j] =0);
  glassworksheet[i][j] := 6;
end;

procedure TSnake.drawfood(x,y: byte);
begin
  canvas.Pen.Color := clblack;
  canvas.Pen.Width := 2;
  canvas.MoveTo(glassleft+(x-1)*unitwidth+1,glasstop+(y-1)*unitheight+1);
  canvas.LineTo(glassleft+(x-1)*unitwidth+1,glasstop+y*unitheight-1);
  canvas.LineTo(glassleft+x*unitwidth-1,glasstop+y*unitheight-1);
  canvas.LineTo(glassleft+x*unitwidth-1,glasstop+(y-1)*unitheight+1);
  canvas.LineTo(glassleft+(x-1)*unitwidth+1,glasstop+(y-1)*unitheight+1);
end;

procedure TSnake.initailizegame;
var
  i,j: Integer;
begin
  for i := 1 to glasswidth do
    for j := 1 to glassheight do
    begin
      if glassworksheet[i][j] > 0 then
        case glassworksheet[i][j] of
          1,2,3,4: drawbody(i,j);
          5: drawwall(i,j);
          6: drawfood(i,j);
        end;
    end;
end;

procedure TSnake.drawbody(x, y: byte);
var
glassrect: TRect;
begin
  canvas.Brush.Color := clblack;
  glassrect := rect(glassleft+(x-1)*unitwidth,glasstop+(y-1)*unitheight,glassleft+x*unitwidth,glasstop+y*unitheight);
  Canvas.FillRect(glassrect);
end;

procedure TSnake.drawwall(x, y: byte);
var
glassrect: TRect;
begin
  canvas.Brush.Color := clblack;
  glassrect := rect(glassleft+(x-1)*unitwidth,glasstop+(y-1)*unitheight,glassleft+x*unitwidth,glasstop+y*unitheight);
  Canvas.FillRect(glassrect);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产免费| 久久久精品黄色| 久久久99精品久久| 亚洲国产视频在线| 国产福利91精品| 国产精品第13页| 蜜臀99久久精品久久久久久软件| 95精品视频在线| 国产亚洲美州欧州综合国| 亚洲国产精品久久不卡毛片| 丁香六月久久综合狠狠色| 欧美欧美欧美欧美首页| 中文字幕日韩欧美一区二区三区| 麻豆成人久久精品二区三区小说| 91麻豆精品视频| 国产精品天天摸av网| 久久国产三级精品| 欧美日本韩国一区二区三区视频| 亚洲日本在线观看| 本田岬高潮一区二区三区| 久久久久久久久久久99999| 午夜伊人狠狠久久| 不卡免费追剧大全电视剧网站| 欧美成人猛片aaaaaaa| 狠狠色丁香久久婷婷综合丁香| 色婷婷av久久久久久久| 中文字幕永久在线不卡| 国产精品一级黄| 久久欧美中文字幕| 国产剧情av麻豆香蕉精品| 欧美α欧美αv大片| 午夜精品福利一区二区蜜股av| 91豆麻精品91久久久久久| 亚洲天堂2016| 在线观看日韩一区| 亚洲最大色网站| 色吊一区二区三区| 亚洲乱码日产精品bd| 92精品国产成人观看免费 | 激情小说亚洲一区| 精品国产露脸精彩对白| 久久精品国产99国产精品| 欧美一级高清片| 久久久国产一区二区三区四区小说| 免费成人av资源网| 精品剧情在线观看| 国产99久久久国产精品潘金| 国产欧美日韩另类一区| 99热这里都是精品| 一区二区三区欧美日| 欧美日产在线观看| 久久99久久99精品免视看婷婷| 久久久久9999亚洲精品| 99精品热视频| 午夜国产精品一区| 日韩欧美国产wwwww| 国产精品综合av一区二区国产馆| 日本一区二区三区视频视频| 色综合色综合色综合| 亚欧色一区w666天堂| 日韩欧美一级精品久久| 国产经典欧美精品| 亚洲乱码中文字幕| 日韩午夜精品电影| 99精品在线免费| 奇米综合一区二区三区精品视频| 国产午夜精品一区二区| 色综合夜色一区| 毛片av中文字幕一区二区| 国产精品久久久久久户外露出| 欧美色网站导航| 国产乱妇无码大片在线观看| 亚洲人成亚洲人成在线观看图片| 3atv一区二区三区| 99在线视频精品| 青青国产91久久久久久| 国产亚洲自拍一区| 欧美高清视频www夜色资源网| 国产传媒一区在线| 天堂久久久久va久久久久| 国产精品久久久久久久裸模| 日韩欧美资源站| 色综合色综合色综合 | 亚洲一二三四区| 久久久天堂av| 欧美一区二区三区在线电影 | 99精品桃花视频在线观看| 青青草成人在线观看| 亚洲欧美日韩国产成人精品影院| 日韩欧美国产麻豆| 色视频一区二区| 欧美久久一二区| 91免费精品国自产拍在线不卡| 狠狠色丁香婷综合久久| 肉丝袜脚交视频一区二区| 亚洲色图在线视频| 26uuu久久天堂性欧美| 欧美视频日韩视频在线观看| 成人午夜电影网站| 国产一区二区伦理| 日韩精品午夜视频| 亚洲一区二区欧美| 亚洲特黄一级片| 国产精品丝袜一区| 国产性做久久久久久| 欧美大度的电影原声| 欧美精品777| 欧美日韩国产高清一区二区| 色欲综合视频天天天| 成人av影院在线| 不卡区在线中文字幕| 国产999精品久久| 国产成人精品网址| 久久99精品久久久久婷婷| 五月天网站亚洲| 亚洲国产aⅴ天堂久久| 亚洲丰满少妇videoshd| 一级中文字幕一区二区| 亚洲精品v日韩精品| 亚洲精品国产视频| 亚洲日本护士毛茸茸| 亚洲欧美日韩在线不卡| 亚洲精品伦理在线| 亚洲精品乱码久久久久久黑人 | 欧美一区国产二区| 777奇米四色成人影色区| 91精品国产综合久久婷婷香蕉 | 国产婷婷色一区二区三区在线| 日韩三级视频中文字幕| 日韩精品一区在线观看| 精品少妇一区二区| 国产亚洲成年网址在线观看| 国产精品污www在线观看| 综合欧美亚洲日本| 亚洲成av人在线观看| 日韩中文字幕区一区有砖一区| 蜜桃精品视频在线观看| 国产伦精一区二区三区| www.av亚洲| 欧美日韩一区国产| 日韩精品一区国产麻豆| 欧美国产禁国产网站cc| 亚洲综合在线视频| 美腿丝袜在线亚洲一区| 国产91在线观看丝袜| 色先锋资源久久综合| 91麻豆精品国产自产在线 | 91福利区一区二区三区| 欧美精品日韩一区| 国产亚洲综合色| 一区二区三区欧美日| 免费成人av在线| 99麻豆久久久国产精品免费| 欧美亚洲愉拍一区二区| 久久综合久久综合亚洲| 亚洲精品美腿丝袜| 久久99九九99精品| 日本黄色一区二区| 精品精品国产高清一毛片一天堂| 最新国产成人在线观看| 麻豆精品一区二区三区| 91在线精品秘密一区二区| 91精选在线观看| 亚洲品质自拍视频网站| 国产在线麻豆精品观看| 日本乱人伦一区| 国产午夜精品理论片a级大结局| 亚洲成人资源在线| 不卡高清视频专区| 亚洲精品在线免费观看视频| 一区二区三区精品视频| 福利一区二区在线| 日韩一区二区三| 亚洲一区在线播放| 不卡av电影在线播放| 精品久久久久久最新网址| 一区二区三区高清在线| 成人激情免费视频| 精品国产91九色蝌蚪| 午夜一区二区三区视频| 91国在线观看| 中文字幕一区二区不卡| 欧美日韩国产高清一区二区三区| 亚洲色图欧美在线| 成人一二三区视频| 久久精品视频网| 精品一区二区三区av| 欧美一区二区三区在线| 亚洲一区免费观看| 91农村精品一区二区在线| 国产视频一区不卡| 国产原创一区二区三区| 欧美一级理论片| 日韩国产精品91| 欧美日韩亚洲另类| 婷婷亚洲久悠悠色悠在线播放| 91福利视频久久久久| 一区二区日韩av| 午夜激情综合网| 亚洲精品视频在线观看免费|