⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snakemapdlg.cpp

📁 j2me游戏快乐蛇0.2(游戏源码已上载)地图编辑器源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:

void CSnakemapDlg::OnAppAbout() 
{
	CAboutDlg ad;
	ad.DoModal();
}

void CSnakemapDlg::OnMenuitem32776() //	save single
{
	CFileDialog fd(FALSE,"","stage",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"All files(*.*)|*.*||");
	if(fd.DoModal()!=IDOK) return;
	CFile file(fd.GetPathName(),CFile::modeCreate|CFile::typeBinary|CFile::modeWrite);
	UpdateData(TRUE);
	int i;
	byte d[32];
	for(i=0;i<32;i++){
		d[i]=0x20;
	}
	for(i=0;i<m_curName.GetLength();i++){
		if(i==32)	break;
		d[i]=(byte)m_curName.GetAt(i);
	}
	file.Write(d,32);
	byte data;
	data=(byte)(m_earth+1);
	file.Write(&data,1);
	data=(byte)m_speed;
	file.Write(&data,1);

	if(m_dir==0)data=1;
	else if(m_dir==1)data=6;
	else if(m_dir==2)data=2;
	else if(m_dir==3)data=5;
	file.Write(&data,1);

	data=(byte)m_snake1x;
	file.Write(&data,1);
	data=(byte)m_snake1y;
	file.Write(&data,1);
	
	data=(byte)m_snake2x;
	file.Write(&data,1);
	data=(byte)m_snake2y;
	file.Write(&data,1);
	data=(byte)m_snakecolor1;
	file.Write(&data,1);

	data=(byte)m_snake3x;
	file.Write(&data,1);
	data=(byte)m_snake3y;
	file.Write(&data,1);
	data=(byte)m_snakecolor2;
	file.Write(&data,1);

	file.Write(map,480);
	
	file.Close();
	AfxMessageBox("Save complete!");
}

void CSnakemapDlg::OnMenuitem32775()  // open
{
	CFileDialog fd(TRUE,NULL,NULL,OFN_FILEMUSTEXIST,"All files(*.*)|*.*||");
	if(fd.DoModal()!=IDOK) return;
	if(openedfile==NULL){
		openedfile=new CFile();
	}else{
		openedfile->Close();
	}
	openedfile->Open(fd.GetPathName(),CFile::modeReadWrite|CFile::typeBinary);
	int num=openedfile->GetLength()/523;
	int i;
	unsigned char data;
	unsigned char name[32];
	m_lvlist.ResetContent();
	for(i=0;i<num;i++){
		openedfile->Seek(523*i,CFile::begin);		
		openedfile->Read(name,32);
		m_lvlist.AddString(CString(name));
	}
	m_lvlist.SetCurSel(0);
	
	openedfile->SeekToBegin();
	openedfile->Read(name,32);
	m_curName=CString(name);
	
	openedfile->Read(&data,1);
	m_earth=data-1;
	openedfile->Read(&data,1);
	m_speed=data;
	
	openedfile->Read(&data,1);
	if(data==1) m_dir=0;
	else if(data==6) m_dir=1;
	else if(data==2) m_dir=2;
	else m_dir=3;

	openedfile->Read(&data,1);
	m_snake1x=data;
	openedfile->Read(&data,1);
	m_snake1y=data;
	
	openedfile->Read(&data,1);
	m_snake2x=data;
	openedfile->Read(&data,1);
	m_snake2y=data;
	openedfile->Read(&data,1);
	m_snakecolor1=data;
	
	openedfile->Read(&data,1);
	m_snake3x=data;
	openedfile->Read(&data,1);
	m_snake3y=data;
	openedfile->Read(&data,1);
	m_snakecolor2=data;
	
	openedfile->Read(map,480);
	UpdateData(FALSE);
}

void CSnakemapDlg::OnMenuitem32771() // Add map
{
	if(openedfile==NULL){
		AfxMessageBox("You cannot add map to a unsaved file.\nSave this file first ,then open it and add again.");
		return;
	}
	m_dir=3;
	m_earth=0;
	m_item1=0;
	m_snake1x=7;
	m_snake2x=6;
	m_snake3x=5;
	m_snake1y=m_snake2y=m_snake3y=10;
	m_snakecolor1=2;
	m_snakecolor2=2;
	curX=0;
	curY=0;
	int i;	
	for( i=0;i<480;i++){
		map[i]=0;
	}
	m_lvlist.InsertString(-1,"SnakeMap");
	m_speed=0;
	m_curName="SnakeMap";
	UpdateData(FALSE);
	Invalidate();
	
	openedfile->SeekToEnd();
	byte d[32];
	for(i=0;i<32;i++){
		d[i]=0x20;
	}
	for(i=0;i<m_curName.GetLength();i++){
		if(i==32)	break;
		d[i]=(byte)m_curName.GetAt(i);
	}
	openedfile->Write(d,32);
	byte data;
	data=(byte)(m_earth+1);
	openedfile->Write(&data,1);
	data=(byte)m_speed;
	openedfile->Write(&data,1);
	
	if(m_dir==0)data=1;
	else if(m_dir==1)data=6;
	else if(m_dir==2)data=2;
	else if(m_dir==3)data=5;
	openedfile->Write(&data,1);
	
	data=(byte)m_snake1x;
	openedfile->Write(&data,1);
	data=(byte)m_snake1y;
	openedfile->Write(&data,1);
	
	data=(byte)m_snake2x;
	openedfile->Write(&data,1);
	data=(byte)m_snake2y;
	openedfile->Write(&data,1);
	data=(byte)m_snakecolor1;
	openedfile->Write(&data,1);
	
	data=(byte)m_snake3x;
	openedfile->Write(&data,1);
	data=(byte)m_snake3y;
	openedfile->Write(&data,1);
	data=(byte)m_snakecolor2;
	openedfile->Write(&data,1);
	
	openedfile->Write(map,480);
	
	
}

void CSnakemapDlg::OnMenuitem32777() // New
{
	if(AfxMessageBox("Current unsaved map will be lost,continue?",MB_OKCANCEL)!=IDOK) return;	
	m_dir=3;
	m_earth=0;
	m_item1=0;
	m_snake1x=7;
	m_snake2x=6;
	m_snake3x=5;
	m_snake1y=m_snake2y=m_snake3y=10;
	m_snakecolor1=2;
	m_snakecolor2=2;
	curX=0;
	curY=0;
	for(int i=0;i<480;i++){
		map[i]=0;
	}
	m_lvlist.ResetContent();
	delete openedfile;
	openedfile=NULL;
	m_speed=0;
	m_curName="SnakeMap";
	UpdateData(FALSE);
	Invalidate();
}

void CSnakemapDlg::OnSelchangeList1() 
{
	if(openedfile==NULL) return;
	//if(AfxMessageBox("The current stage will NOT be saved unless you choose save in the file menu,continue?",MB_OKCANCEL)!=IDOK)return;
	int p=m_lvlist.GetCurSel();
	openedfile->Seek(523*p,CFile::begin);
	unsigned char name[32];
	unsigned char data;
	openedfile->Read(name,32);
	m_curName=CString(name);
	
	openedfile->Read(&data,1);
	m_earth=data-1;
	openedfile->Read(&data,1);
	m_speed=data;
	
	openedfile->Read(&data,1);
	if(data==1) m_dir=0;
	else if(data==6) m_dir=1;
	else if(data==2) m_dir=2;
	else m_dir=3;
	
	openedfile->Read(&data,1);
	m_snake1x=data;
	openedfile->Read(&data,1);
	m_snake1y=data;
	
	openedfile->Read(&data,1);
	m_snake2x=data;
	openedfile->Read(&data,1);
	m_snake2y=data;
	openedfile->Read(&data,1);
	m_snakecolor1=data;
	
	openedfile->Read(&data,1);
	m_snake3x=data;
	openedfile->Read(&data,1);
	m_snake3y=data;
	openedfile->Read(&data,1);
	m_snakecolor2=data;
	
	openedfile->Read(map,480);
	UpdateData(FALSE);
	Invalidate();
	
}

void CSnakemapDlg::OnMenuitem32772() // save in file
{
	if(openedfile==NULL){
		AfxMessageBox("No files opened!");
		return;
	}
	int i;
	UpdateData(TRUE);
	byte d[32];
	openedfile->Seek(523*m_lvlist.GetCurSel(),CFile::begin);
	for(i=0;i<32;i++){
		d[i]=0x20;
	}
	for(i=0;i<m_curName.GetLength();i++){
		if(i==32)	break;
		d[i]=(byte)m_curName.GetAt(i);
	}
	openedfile->Write(d,32);
	byte data;
	data=(byte)(m_earth+1);
	openedfile->Write(&data,1);
	data=(byte)m_speed;
	openedfile->Write(&data,1);
	
	if(m_dir==0)data=1;
	else if(m_dir==1)data=6;
	else if(m_dir==2)data=2;
	else if(m_dir==3)data=5;
	openedfile->Write(&data,1);
	
	data=(byte)m_snake1x;
	openedfile->Write(&data,1);
	data=(byte)m_snake1y;
	openedfile->Write(&data,1);
	
	data=(byte)m_snake2x;
	openedfile->Write(&data,1);
	data=(byte)m_snake2y;
	openedfile->Write(&data,1);
	data=(byte)m_snakecolor1;
	openedfile->Write(&data,1);
	
	data=(byte)m_snake3x;
	openedfile->Write(&data,1);
	data=(byte)m_snake3y;
	openedfile->Write(&data,1);
	data=(byte)m_snakecolor2;
	openedfile->Write(&data,1);
	
	openedfile->Write(map,480);
	AfxMessageBox("Save complete!");
}

void CSnakemapDlg::OnChangeEdit9() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	if(m_lvlist.GetCurSel()==-1)return;
	UpdateData(TRUE);
	if(m_curName.GetLength()>32){
		AfxMessageBox("Stage name must be shorter than 32 ltrs!");
		m_curName=m_curName.Right(32);
		UpdateData(FALSE);
		return;
	}
	int i=m_lvlist.GetCurSel();
	m_lvlist.DeleteString(i);
	m_lvlist.InsertString(i,m_curName);
	m_lvlist.SetCurSel(i);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -