0 Star 0 Fork 0

墙外行人/qtsokoban

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
HtmlPrinter.cpp 1.70 KB
一键复制 编辑 原始数据 按行查看 历史
墙外行人 提交于 2023-11-16 02:30 . 提交代码
#include <stdio.h>
#include <stdlib.h>
#include "HtmlPrinter.h"
void
HtmlPrinter::wall (bool up, bool down, bool left, bool right)
{
switch ( (up!=0) |
((down!=0) << 1) |
((left!=0) << 2) |
((right!=0) << 3)) {
case 0:
case 1:
case 2:
case 3:
image ("vertiwall");
break;
case 4:
case 5:
case 6:
case 7:
image ("eastwall");
break;
case 8:
case 9:
case 10:
case 11:
image ("westwall");
break;
case 12:
case 13:
case 14:
case 15:
image ("horizwall");
break;
default:
abort ();
}
}
void
HtmlPrinter::image (const char *name) {
printf ("<td><img src=%s.gif width=40 height=40><br clear=all>\n", name);
}
void
HtmlPrinter::empty () {
printf ("<td>\n");
}
void
HtmlPrinter::printSquare (LevelMap *lm, int x, int y) {
if (lm->xpos () == x && lm->ypos () == y) {
image (lm->goal (x, y) ? "saveman" : "man");
return;
}
if (lm->empty (x, y)) {
if (lm->floor (x, y)) {
image (lm->goal (x, y) ? "goal" : "floor");
} else {
empty ();
}
return;
}
if (lm->wall (x, y)) {
wall (lm->wallUp (x, y),
lm->wallDown (x, y),
lm->wallLeft (x, y),
lm->wallRight (x, y));
return;
}
if (lm->object (x, y)) {
image (lm->goal (x, y) ? "treasure" : "object");
return;
}
}
void
HtmlPrinter::printHtml (LevelMap *lm) {
printf ("\
<html>\n\
<head>\n\
<title>ksokoban level</title>\n\
</head>\n\
<body background=background.gif>\n\
");
printf ("<table border=0 cellspacing=0 cellpadding=0>\n");
for (int y=0; y<lm->height(); y++) {
printf ("<tr>\n");
for (int x=0; x<lm->width(); x++) {
printSquare (lm, x, y);
}
}
printf ("\
</table>\n\
</body>\n\
</html>\n\
");
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/qwxr/qtsokoban.git
git@gitee.com:qwxr/qtsokoban.git
qwxr
qtsokoban
qtsokoban
main

搜索帮助