貪吃蛇(版本1 0還有bug,但是基本能使了)

2021-07-15 06:57:42 字數 3845 閱讀 4825

.h  窗體內運動範圍為紅線內的

630*350,

乙個單元是10*10

// g716dlg.h : 標頭檔案

//#pragma once

// cg716dlg 對話方塊

class cg716dlg : public cdialogex

; protected:

virtual void dodataexchange(cdataexchange* pdx); // ddx/ddv 支援

// 實現

protected:

hicon m_hicon;

// 生成的訊息對映函式

virtual bool oninitdialog();

afx_msg void onsyscommand(uint nid, lparam lparam);

afx_msg void onpaint();

afx_msg hcursor onquerydragicon();

declare_message_map()

public:

afx_msg void onbnclickedbutton1();

afx_msg void ontimer(uint_ptr nidevent);

int mtime;

int speed;

void cell(int x,int y);

void clearcell(int x,int y);

int positionx;

int positiony;

int number;

bool pretranslatemessage(msg* pmsg);

int direction;

cpoint food();

cpoint foodposition;

cpoint headposition;

cpoint tailposition;

cpoint snakebody[20];

// cpoint temppoint;

int length;//snake's length

void snakemove(int direc);

int eaten;

void drawedge();

int failtest();

};

.cpp

// g716dlg.cpp : 實現檔案

//#include "stdafx.h"

#include "g716.h"

#include "g716dlg.h"

#include "afxdialogex.h"

#ifdef _debug

#define new debug_new

#endif

// 用於應用程式「關於」選單項的 caboutdlg 對話方塊

class caboutdlg : public cdialogex

; protected:

virtual void dodataexchange(cdataexchange* pdx); // ddx/ddv 支援

// 實現

protected:

declare_message_map()

};caboutdlg::caboutdlg() : cdialogex(caboutdlg::idd)

void caboutdlg::dodataexchange(cdataexchange* pdx)

begin_message_map(caboutdlg, cdialogex)

end_message_map()

// cg716dlg 對話方塊

cg716dlg::cg716dlg(cwnd* pparent /*=null*/)

: cdialogex(cg716dlg::idd, pparent)

void cg716dlg::dodataexchange(cdataexchange* pdx)

begin_message_map(cg716dlg, cdialogex)

on_wm_syscommand()

on_wm_paint()

on_wm_querydragicon()

on_bn_clicked(idc_button1, &cg716dlg::onbnclickedbutton1)

on_wm_timer()

end_message_map()

// cg716dlg 訊息處理程式

bool cg716dlg::oninitdialog()

} // 設定此對話方塊的圖示。當應用程式主視窗不是對話方塊時,框架將自動

// 執行此操作

seticon(m_hicon, true); // 設定大圖示

seticon(m_hicon, false); // 設定小圖示

// todo: 在此新增額外的初始化**

mtime = 0;

length = 0;

return true; // 除非將焦點設定到控制項,否則返回 true

}void cg716dlg::onsyscommand(uint nid, lparam lparam)

else }

// 如果向對話方塊新增最小化按鈕,則需要下面的**

// 來繪製該圖示。對於使用文件/檢視模型的 mfc 應用程式,

// 這將由框架自動完成。

void cg716dlg::onpaint()

else }

//當使用者拖動最小化視窗時系統呼叫此函式取得游標

//顯示。

hcursor cg716dlg::onquerydragicon()

void cg716dlg::onbnclickedbutton1()

void cg716dlg::ontimer(uint_ptr nidevent)

if(failtest())

break;

} cdialogex::ontimer(nidevent);

}void cg716dlg::cell(int x,int y)

void cg716dlg::clearcell(int x,int y)

//按鍵響應函式

bool cg716dlg::pretranslatemessage(msg* pmsg)

// return true;

}return cdialog::pretranslatemessage(pmsg);

}cpoint cg716dlg::food()

void cg716dlg::snakemove(int direc)

else

clearcell(tailposition.x,tailposition.y);

for(int i = length ; i>0 ; i--)//update the body

snakebody[i] = snakebody[i-1];//keep the head

tailposition.x = snakebody[length].x;

tailposition.y = snakebody[length].y;

switch (direc)

cell(snakebody[length].x,snakebody[length].y);

}void cg716dlg::drawedge()

int cg716dlg::failtest()

} return fail;

}

字元版本貪吃蛇遊戲設計

在前面的智慧型蛇遊戲中,我已經將我的全部 都貼出來了,大家也都看到了我的成果,雖然存在很多bug,但總算是有乙個初步的構架了,接下來,我要與大家分享一下這條蛇的艱難成長過程。首先,當然是最順利的乙個部分啦,那就是除去最基本的影象列印了,這我想也不用多說,大家接觸到這個作業時,肯定噼里啪啦就打出了乙個...

大神版本C語言貪吃蛇

include include include windows程式設計標頭檔案 include include 控制台輸入輸出標頭檔案 ifndef cplusplus typedef char bool define false 0 define true 1 endif 將游標移動到控制台的 x...

字元版本的貪吃蛇的設計

其實字元版本的貪吃蛇並不是很大的乙個工作量,大概是在120行 左右。而整個程式的設計也是充分體現著 自頂向下 的設計思路的。主函式就是極其簡單,畢竟最開始思考的時候就是想著什麼條件下使用者可以玩 蛇沒有死掉 什麼條件就結束。int main playgame過程就包括要把一些元素放上去了,其中也包含...