0
已解决
沙宸安
高级启示者
高级启示者
若要绘制地图,请先运行装机软件:
#include<iostream>
#include<fstream>
using namespace std;
int main(){
ofstream fout("地图存档.txt");
int i,j,k;
for(i=1;i<=10;i++){
fout<<"图层"<<i<<endl;
for(j=0;j<=59;j++){
for(k=0;k<=59;k++){
fout<<7<<" ";
}
fout<<endl;
}
}
fout.close();
}
主代码:
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<cstring>
#include<time.h>
#include<windows.h>
#define KEY_DOWN(VK_NOnam) ((GetAsyncKeyState(VK_NOnam) & 0x8000) ? 1:0)
using namespace std;
int i,j,k,pic[11][60][60];
string nam[11];
void sav(){
ofstream fout("地图存档.txt");
for(i=1;i<=10;i++){
fout<<nam[i]<<endl;
for(j=0;j<=59;j++){
for(k=0;k<=59;k++){
fout<<pic[i][j][k]<<" ";
}
fout<<endl;
}
}
fout.close();
}
void rea(){
ifstream fin("地图存档.txt");
for(i=1;i<=10;i++){
fin>>nam[i];
for(j=0;j<=59;j++){
for(k=0;k<=59;k++){
fin>>pic[i][j][k];
}
}
}
fin.close();
}
void color(int corcorcor){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),corcorcor);
}
int kd(char ccc){
if(!KEY_DOWN(ccc)) return 0;
else return 1;
}
void xapic(int uuu){
int xx=0,yy=0,cr=7;
bool pen=0;
while(!kd('M')){
system("cls");
color(7);
cout<<"您已进入图片(60x60)编辑模式"<<endl<<"原文件:"<<endl;
for(i=0;i<=59;i++){
for(j=0;j<=59;j++){
color(pic[uuu][i][j]);
cout<<"▇";
}
cout<<endl;
}
color(7);
cout<<">>XA系统 (长按3-4秒,按键更新较慢)Q-修改图片 M-退出编辑"<<endl;
Sleep(3000);
if(kd('Q'))while(!kd('M')){
system("cls");
color(7);
cout<<"您已进入图片(60x60)编辑模式";
cout<<" x:"<<xx<<" y:"<<yy<<endl;
for(i=0;i<=59;i++){
for(j=0;j<=59;j++){
color(pic[uuu][i][j]);
cout<<"▇";
}
cout<<endl;
}
color(7);
cout<<">>XA系统 WASD-操作画笔 E-";
if(pen) cout<<"抬起画笔 ";
else cout<<"放下画笔 ";
cout<<"R-更改颜色 M-保存并退出"<<endl;
bool kdown=0;
while(!kdown){
if(kd('E')){
pen=!pen;
kdown=1;
}
if(kd('W') && xx!=0){
xx--;
kdown=1;
}
if(kd('S') && xx!=59){
xx++;
kdown=1;
}
if(kd('A') && yy!=0){
yy--;
kdown=1;
}
if(kd('D') && yy!=59){
yy++;
kdown=1;
}
if(pen) pic[uuu][xx][yy]=cr;
if(kd('R')){
system("cls");
cout<<"更改色号:";
for(i=0;i<=15;i++){
color(i);
cout<<"▇ ";
}
color(7);
cout<<endl<<"色号编码:";
for(i=0;i<=15;i++){
if(i<10)cout<<i<<" ";
else cout<<i<<" ";
}
cout<<endl;
cin>>cr;
cr=cr%16;
kdown=1;
}
if(kd('M')){
kdown=1;
}
}
}
}
}
int main(){
while(!kd('M')){
int cmmmd=0;
bool kb=0;
rea();
color(14);
system("cls");
cout<<"酷町问答地形绘制"<<endl;
color(7);
cout<<"O-打开图层 R-保存 N-重命名图层 M-退出"<<endl;
while(!kb){
if(kd('O')){
for(i=1;i<=10;i++){
cout<<i<<":"<<nam[i]<<endl;
}
cout<<"输入图层:"<<endl;
cin>>i;
xapic(i);
sav();
system("cls");
cout<<"正在退出。。。"<<endl;
Sleep(1000);
kb=1;
}
if(kd('R')){
sav();
system("cls");
cout<<"保存成功"<<endl;
Sleep(1000);
kb=1;
}
if(kd('N')){
system("cls");
for(i=1;i<=10;i++){
cout<<i<<":"<<nam[i]<<endl;
}
cout<<"输入图层:";
cin>>i;
cout<<endl;
cout<<"新名字:";
cin>>nam[i];
cout<<"改名成功"<<endl;
Sleep(1000);
kb=1;
sav();
}
}}
}
其实这东西的原理跟XA图片编辑器差不多,都是使用画笔操作的。
另外,我是严格按照王子逸的要求来的(大小60x60),有的人使用时会出现这样的情况:
那我也没办法。
其他人:“我。。。!XA你太。。。”
好的,再来个补丁版本:
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<cstring>
#include<time.h>
#include<windows.h>
#define KEY_DOWN(VK_NOnam) ((GetAsyncKeyState(VK_NOnam) & 0x8000) ? 1:0)
using namespace std;
int i,j,k,pic[11][60][60];
string nam[11];
void sav(){
ofstream fout("地图存档.txt");
for(i=1;i<=10;i++){
fout<<nam[i]<<endl;
for(j=0;j<=59;j++){
for(k=0;k<=59;k++){
fout<<pic[i][j][k]<<" ";
}
fout<<endl;
}
}
fout.close();
}
void rea(){
ifstream fin("地图存档.txt");
for(i=1;i<=10;i++){
fin>>nam[i];
for(j=0;j<=59;j++){
for(k=0;k<=59;k++){
fin>>pic[i][j][k];
}
}
}
fin.close();
}
void color(int corcorcor){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),corcorcor);
}
int kd(char ccc){
if(!KEY_DOWN(ccc)) return 0;
else return 1;
}
void xapic(int uuu){
int xx=0,yy=0,cr=7;
bool pen=0;
while(!kd('M')){
system("cls");
color(7);
cout<<"您已进入图片(60x60)编辑模式"<<endl<<"原文件:"<<endl;
for(i=0;i<=59;i++){
for(j=0;j<=59;j++){
color(pic[uuu][i][j]);
cout<<"@";
}
cout<<endl;
}
color(7);
cout<<">>XA系统 (长按3-4秒,按键更新较慢)Q-修改图片 M-退出编辑"<<endl;
Sleep(3000);
if(kd('Q'))while(!kd('M')){
system("cls");
color(7);
cout<<"您已进入图片(60x60)编辑模式";
cout<<" x:"<<xx<<" y:"<<yy<<endl;
for(i=0;i<=59;i++){
for(j=0;j<=59;j++){
color(pic[uuu][i][j]);
cout<<"@";
}
cout<<endl;
}
color(7);
cout<<">>XA系统 WASD-操作画笔 E-";
if(pen) cout<<"抬起画笔 ";
else cout<<"放下画笔 ";
cout<<"R-更改颜色 M-保存并退出"<<endl;
bool kdown=0;
while(!kdown){
if(kd('E')){
pen=!pen;
kdown=1;
}
if(kd('W') && xx!=0){
xx--;
kdown=1;
}
if(kd('S') && xx!=59){
xx++;
kdown=1;
}
if(kd('A') && yy!=0){
yy--;
kdown=1;
}
if(kd('D') && yy!=59){
yy++;
kdown=1;
}
if(pen) pic[uuu][xx][yy]=cr;
if(kd('R')){
system("cls");
cout<<"更改色号:";
for(i=0;i<=15;i++){
color(i);
cout<<"▇ ";
}
color(7);
cout<<endl<<"色号编码:";
for(i=0;i<=15;i++){
if(i<10)cout<<i<<" ";
else cout<<i<<" ";
}
cout<<endl;
cin>>cr;
cr=cr%16;
kdown=1;
}
if(kd('M')){
kdown=1;
}
}
}
}
}
int main(){
while(!kd('M')){
int cmmmd=0;
bool kb=0;
rea();
color(14);
system("cls");
cout<<"酷町问答地形绘制"<<endl;
color(7);
cout<<"O-打开图层 R-保存 N-重命名图层 M-退出"<<endl;
while(!kb){
if(kd('O')){
for(i=1;i<=10;i++){
cout<<i<<":"<<nam[i]<<endl;
}
cout<<"输入图层:"<<endl;
cin>>i;
xapic(i);
sav();
system("cls");
cout<<"正在退出。。。"<<endl;
Sleep(1000);
kb=1;
}
if(kd('R')){
sav();
system("cls");
cout<<"保存成功"<<endl;
Sleep(1000);
kb=1;
}
if(kd('N')){
system("cls");
for(i=1;i<=10;i++){
cout<<i<<":"<<nam[i]<<endl;
}
cout<<"输入图层:";
cin>>i;
cout<<endl;
cout<<"新名字:";
cin>>nam[i];
cout<<"改名成功"<<endl;
Sleep(1000);
kb=1;
sav();
}
}}
}
这样会舒服点。