📄 tringdlg.h
字号:
// tringDlg.h : header file
//
#if !defined(AFX_TRINGDLG_H__E58EFF7F_614F_4FF4_8398_598FC480DFC3__INCLUDED_)
#define AFX_TRINGDLG_H__E58EFF7F_614F_4FF4_8398_598FC480DFC3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CTringDlg dialog
class CState;
class CTuple;
#include <afxtempl.h>
class COperate
{
private:
CString input;
int flag;//flag=-1 left; flag=1 right; flag=0 set
CString output;
CState *next_state;
public:
COperate(CTuple tuple);
~COperate(){};
void set_input(CString str){input=str;}
void set_flag(int l){flag=l;}
void set_output(CString a){output=a;}
void set_net_state(CState *next){next_state=next;}
CString get_input(){return input;}
CState *get_next_state(){return next_state;}
int get_flag(){return flag;}
CString get_output(){return output;}
};
class CState
{
private:
CString state;
CList<COperate *,COperate*> list;
CPoint point;
int level;
public:
CState(){point.x=9999;point.y=9999;};
~CState(){};
CString get_state(){return state;}
void set_state(CString str){state=str;}
CList<COperate *,COperate*> *get_list(){return &list;}
COperate *find_next_state(CString str);
void draw(CDC *dc);
void set_point(CPoint x){point=x;};
CPoint get_point(){return point;}
bool is_point_seted();
void set_level(int x){level=x;};
int get_level(){return level;}
void DeleteAll();
};
class CTuple
{
private:
CString state;
CString input;
int flag;//flag=-1 left; flag=1 right; flag=0 set
CString output;
CString next_state;
public:
CTuple(){};
~CTuple(){};
void set_state(CString str){state=str;}
void set_input(CString a){input=a;}
void set_flag(int tras){flag=tras;}
void set_output(CString a){output=a;}
void set_next_state(CString str){next_state=str;}
int cmp(CTuple tmp);
CString get_state(){return state;}
CString get_input(){return input;}
int get_flag(){return flag;}
CString get_output(){return output;}
CString get_next_state(){return next_state;}
void copy(CTuple tuple);
};
class CGrid
{
private:
char tape[20];
int left_tape;
CString four_team;
CState g_state[100];
int len_state;
CString start_state;
int start_state_index;
CString input_tape;
CString old_input_tape;
int tape_index;
int tape_index_lasttime;
bool run_over;
int current_state;
int next_state;
int graph_flag;
int NumStep;
public:
CGrid();
~CGrid(){};
void ReSet();
void input(CString str){four_team=str;}
void set_input(CString str){input_tape=str;initial_tape(left_tape);synchronization();}
void trans_state();
void trans_state(CString str,CTuple &state);
CString get_string(CString str,int len);
CString get_string(){return input_tape;}
void check_tuple(CTuple tuple[],int &len);
int tuple_state(CTuple tuple[],int len_tuple,CState state[]);
int get_state_index(CTuple tuple,CState state[],int len);
int get_num_state(CTuple tuple[],int len_tuple,CState state[]);
void insert_line(CTuple tuple,CState* state,int num_state);
int string_int(CString str);
void set_tape();
void set_start_state(CString str){start_state=str;}
void run(CDC *dc);
int find_index_of_state(CState *local);
void set_four_team(CString str);
void draw(CDC *dc);
void initial_tape(int i);
bool get_run_over(){return run_over;}
void draw_tape(CDC *dc);
void draw_box(CDC *dc);
void draw_graph_state(CDC *dc);
void layout_state_y(CState *x,int top,int bottom,int level);
void layout_state_x();
void modify_tape(COperate *x);
void reset();
CString get_input_tape(){return input_tape;}
void display_state(CDC *dc);
void display_state(CDC *dc,CState *t);
void draw_line(CDC *dc,CState *head);
void draw_line(CDC *dc);
void draw_line(CDC *dc,CState *head,CList<COperate *,COperate*> *mylist);
bool is_head_tail_same(COperate p1,COperate p2);
void draw_arrow(CDC *dc,CPoint start,CPoint end,COLORREF color);
void draw_state(CDC *dc);
void draw_grid(CDC *dc);
void clear(CDC *dc);
void DeleteAll();
int GetNumStep(){return NumStep;};
void synchronization(){old_input_tape=input_tape;}
void feedback(){input_tape=old_input_tape;};
};
class CTringDlg : public CDialog
{
// Construction
public:
CTringDlg(CWnd* pParent = NULL); // standard constructor
CGrid grid;
CString tape;
CString start_state;
int flag;
int maxstep;
// Dialog Data
//{{AFX_DATA(CTringDlg)
enum { IDD = IDD_TRING_DIALOG };
CString m_input;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTringDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
void draw_grid(CPaintDC *dc);
CString modify(CString str);
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CTringDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnRun();
afx_msg void OnSetTape();
afx_msg void OnMenuitem32771();
afx_msg void OnFileOpen();
afx_msg void OnRunStep();
afx_msg void Onreset();
afx_msg void OnFileSave();
afx_msg void OnHelp();
afx_msg void OnMaxStep();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
CString int_string(int lo);
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_TRINGDLG_H__E58EFF7F_614F_4FF4_8398_598FC480DFC3__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -