0x00007FF60BACB903 处有未经处理的异常(在 期末大作业.exe 中): 0xC0000005: 读取位置 0x0000000200000006 时发生访问冲突。
#include<iostream>
#include<easyx.h>//图形界面头文件
#include<mmsystem.h>//多媒体头文件
#pragma comment(lib,"winmm.lib")//多媒体库文件
#define ROW 20
#define COL 37
#define SIZE 25 //字体大小
using namespace std;
int r = 17, c = 2, n = 1;//我的初始位置
//文字枚举编号
enum {
空, 墙, 我, 门, 学, 会, 开, 是, 冒, 险, 的, 第, 一, 步, 们,
始, 吧, 箱, 推, 障, 碍, 物, 无, 法, 试, 拖, 走, 小, 公, 举,
床, 亚, 特, 兰, 蒂, 斯, 包, 电, 视, 桌, 要, 钱, 不, 命, 最,
新, 消, 息, :, 海, 平, 面, 正, 在, 下, 降, 里, 有, 本, C,
加, 大, 金, 戈, 波, 浪, 沙, 滩, 鱼, 鲨, 礁, 石, 水, 皮, 太,
深, 了, 浅, 破, S, H, I, E, T, R, L,
};
//用数组存放文字
const char* text[] = {
" ", "墙", "我", "门", "学", "会", "开", "是", "冒", "险", "的", "第", "一", "步", "们",
"始", "吧", "箱", "推", "障", "碍", "物", "无", "法", "试", "拖", "走", "小", "公", "举",
"床", "亚", "特", "兰", "蒂", "斯", "包", "电", "视", "桌", "要", "钱", "不", "命", "最",
"新", "消", "息", ":", "海", "平", "面", "正", "在", "下", "降", "里", "有", "本", "C",
"加", "大", "金", "戈", "波", "浪", "沙", "滩", "鱼", "鲨", "礁", "石", "水", "皮", "太",
"深", "了", "浅", "破", "S", "H","I", "E", "T", "R", "L",
};
//地图
int map1[ROW][COL] = {
墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,礁,海,海,海,海,海,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,海,空,空,空,空,海,墙,空,空,空,空,C ,T ,R ,L ,:,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,浪,海,海,海,海,海,海,墙,空,空,空,S ,H ,I ,E ,T ,:,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,礁,海,空,空,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,石,海,空,空,鱼,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,空,墙,
门,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,海,空,空,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,浪,海,空,鱼,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,海,空,空,空,空,海,墙,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,滩,海,海,海,海,海,海,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,海,空,空,空,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,波,海,空,空,空,鲨,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,浪,海,空,空,空,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,空,空,空,空,海,空,鲨,空,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,包,电,视,箱,空,空,空,空,空,空,墙,空,空,空,沙,海,空,空,空,空,空,海,墙,空,空,空,空,空,空,墙,墙,墙,门,墙,墙,墙,
墙,空,空,空,空,空,空,桌,桌,桌,空,墙,空,空,空,滩,海,空,空,空,空,空,海,墙,空,空,空,空,空,空,墙,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,桌,桌,桌,空,墙,空,空,空,空,海,空,鲨,空,鲨,空,海,墙,空,空,空,空,空,空,墙,空,空,空,空,空,墙,
墙,床,我,空,空,空,空,桌,桌,桌,空,墙,空,空,空,沙,海,空,空,空,空,空,海,墙,空,空,空,空,空,空,墙,空,小,公,举,床,墙,
墙,床,床,床,空,空,空,空,空,空,空,空,空,空,空,滩,海,海,海,海,海,海,海,墙,空,空,空,空,空,空,墙,空,床,床,床,床,墙,
墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,
};
int map2[ROW][COL] = {
墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,礁,海,海,海,海,海,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,海,空,空,空,空,海,墙,空,空,空,空,C ,T ,R ,L ,:,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,浪,海,海,海,海,海,海,墙,空,空,空,S ,H ,I ,E ,T ,:,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,礁,海,空,空,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,石,海,空,空,鱼,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,墙,墙,墙,空,空,空,空,空,空,空,空,海,空,空,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,浪,海,空,鱼,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,海,空,空,空,空,海,墙,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,滩,海,海,海,海,海,海,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,海,空,空,空,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,波,海,空,空,空,鲨,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,空,空,空,空,空,空,空,空,浪,海,空,空,空,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,空,空,空,空,海,空,鲨,空,空,空,海,墙,空,空,空,空,空,空,空,空,空,空,空,空,墙,
墙,包,电,视,箱,空,空,空,空,空,空,墙,空,空,空,沙,海,空,空,空,空,空,海,墙,空,空,空,空,空,空,墙,墙,墙,门,墙,墙,墙,
墙,空,空,空,空,空,空,桌,桌,桌,空,墙,空,空,空,滩,海,空,空,空,空,空,海,墙,空,空,空,空,空,空,墙,空,空,空,空,空,墙,
墙,空,空,空,空,空,空,桌,桌,桌,空,墙,空,空,空,空,海,空,鲨,空,鲨,空,海,墙,空,空,空,空,空,空,墙,空,空,空,空,空,墙,
墙,床,我,空,空,空,空,桌,桌,桌,空,墙,空,空,空,沙,海,空,空,空,空,空,海,墙,空,空,空,空,空,空,墙,空,小,公,举,床,墙,
墙,床,床,床,空,空,空,空,空,空,空,空,空,空,空,滩,海,海,海,海,海,海,海,墙,空,空,空,空,空,空,墙,空,床,床,床,床,墙,
墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,墙,
};
//输出二维数组
void GameDraw1() {
BeginBatchDraw();//双缓冲防止画面闪烁卡顿
cleardevice();//刷新界面
for (int i = 0;i < ROW;i++)
for (int j = 0;j < COL;j++)
outtextxy(j * SIZE, i * SIZE, text[map1[i][j]]);
EndBatchDraw();
}
void GameDraw2() {
BeginBatchDraw();//双缓冲防止画面闪烁卡顿
cleardevice();//刷新界面
for (int i = 0;i < ROW;i++)
for (int j = 0;j < COL;j++)
outtextxy(j * SIZE, i * SIZE, text[map2[i][j]]);//问题显示在这一行
EndBatchDraw();
}
void Move1(int a, int b) {
//开门
if (map1[r + a][c + b]== 门) {
n = 0;
//GameDraw2();
//mciSendString("play door from 0",0,0,0);//开门音乐
}
//前面是空地时
else if (map1[r + a][c + b] == 空) {
map1[r + a][c + b] += 我;
map1[r][c] -= 我;
r += a;
c += b;
}
//查看包(看电视开箱子同理)
if (map1[r - 1][c] == 包) {
map1[4][3] = 海, map1[4][4] = 门, map1[4][5] = 墙;
}
}
void Move2(int a, int b) {
//开门
if (map2[r + a][c + b] == 门) {
n = 0;
//GameDraw2();
//mciSendString("play door from 0",0,0,0);//开门音乐
}
//前面是空地时
else if (map2[r + a][c + b] == 空) {
map2[r + a][c + b] += 我;
map2[r][c] -= 我;
r += a;
c += b;
}
//查看包(看电视开箱子同理)
if (map2[r - 1][c] == 包) {
map2[4][3] = 海, map2[4][4] = 门, map2[4][5] = 墙;
}
}
int Gameplay1() {
ExMessage m = { 0 };//窗口消息
m = getmessage(EX_KEY);//只获取键盘的消息
switch (m.message)
{
case WM_KEYDOWN: //按下键盘
switch (m.vkcode)
{
case 'W':Move1(-1, 0);break;
case 'S':Move1(1, 0);break;
case 'A':Move1(0, -1);break;
case 'D':Move1(0, 1);break;
}
break;
}
return 0;
}
int Gameplay2() {
ExMessage m = { 0 };//窗口消息
m = getmessage(EX_KEY);//只获取键盘的消息
switch (m.message)
{
case WM_KEYDOWN: //按下键盘
switch (m.vkcode)
{
case 'W':Move2(-1, 0);break;
case 'S':Move2(1, 0);break;
case 'A':Move2(0, -1);break;
case 'D':Move2(0, 1);break;
}
break;
}
return 0;
}
int main() {
//mciSendString("open 文件名.mp3 alias bgm", 0, 0, 0);
//mciSendString("open 文件名.mp3 alias door", 0, 0, 0);
//mciSendString("setaudio bgm volume to 150", 0, 0, 0);
//mciSendString("setaudio door volume to 150", 0, 0, 0);
//mciSendString("play bgm repeat", 0, 0, 0);
initgraph(COL * SIZE, ROW * SIZE);
settextstyle(SIZE, 0, "微软雅黑");
while ( n==1) {
GameDraw1();
Gameplay1();
}
n = 1;
while (n == 1) {
GameDraw2();
Gameplay2();
}
return 0;
}