.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過程就包括要把一些元素放上去了,其中也包含...