lopar-patch-1 #1

Merged
lopar merged 5 commits from lopar-patch-1 into master 2022-02-20 23:02:48 +00:00
16 changed files with 236 additions and 1 deletions

View File

@ -1,2 +1,3 @@
# Template # 2D Map
Простейший пример генерации карты для игр.

20
map.csv Normal file
View File

@ -0,0 +1,20 @@
x;w;x;w;w;w;x;w;w;w;w;w;w;w;w;w;w;w;w;g;w;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;g;x;x;
x;x;x;w;x;x;x;x;g;g;g;g;g;g;g;g;g;w;g;g;g;g;g;g;g;x;x;x;g;g;g;g;x;x;x;g;g;g;g;x;
g;g;x;w;w;x;g;x;g;w;w;w;w;g;w;w;g;g;g;w;w;w;w;w;g;g;g;g;g;w;w;g;x;x;x;g;w;w;g;x;
x;g;x;w;m;x;g;g;g;g;g;g;w;g;w;g;g;w;g;g;g;g;g;w;w;g;w;g;w;w;g;g;g;g;g;g;g;w;g;w;
x;g;g;g;g;x;x;g;o;o;g;w;w;w;w;g;w;w;g;w;g;w;w;w;w;w;w;w;w;w;w;w;g;w;w;w;w;w;w;w;
x;x;g;x;g;g;g;g;g;o;g;w;g;w;w;w;w;w;g;w;g;g;g;w;g;w;g;w;g;w;g;w;g;w;g;g;g;g;w;w;
x;x;x;x;g;o;o;o;o;o;g;g;g;g;g;w;g;w;w;w;w;w;w;w;g;w;g;g;g;w;g;w;g;w;w;g;w;w;w;w;
g;g;g;g;g;g;g;g;g;o;o;g;o;o;g;g;g;g;g;w;g;w;g;w;g;w;g;w;w;w;g;w;g;g;g;g;g;w;x;w;
x;x;x;x;x;g;o;g;o;o;o;g;o;o;o;g;w;w;w;w;g;w;g;g;g;g;g;g;g;w;g;w;g;w;w;w;w;w;w;x;
x;g;x;g;g;g;o;o;o;g;o;g;g;g;o;g;w;g;w;w;g;g;g;w;w;w;w;w;g;g;g;g;g;w;g;g;g;g;g;g;
g;g;g;g;x;g;g;g;o;g;o;o;g;o;o;g;g;g;g;g;g;w;w;w;w;g;w;w;w;w;w;w;w;w;g;o;o;o;o;o;
x;x;x;g;x;g;o;o;o;g;g;o;g;o;o;o;o;o;o;o;g;g;g;g;g;g;g;g;g;g;g;g;g;g;g;g;g;o;o;w;
x;g;g;g;x;g;g;g;g;g;o;o;g;g;g;g;g;g;o;g;g;o;o;o;o;o;g;g;o;o;o;o;o;o;o;o;o;o;o;w;
x;x;g;x;x;x;g;o;g;o;o;o;o;o;o;o;o;g;o;o;g;g;g;g;g;o;g;g;g;g;g;g;g;g;g;g;g;o;g;o;
x;x;x;x;g;x;g;o;o;o;o;g;o;o;g;g;o;g;o;g;g;o;g;o;o;o;g;g;o;o;o;o;o;g;o;o;o;o;g;g;
x;x;g;g;g;g;g;g;o;g;g;g;g;g;g;o;o;o;o;g;o;o;g;g;g;o;g;g;o;x;x;x;o;g;g;g;g;g;g;o;
x;m;g;x;g;x;x;g;g;g;x;g;o;o;o;o;o;g;g;g;o;o;g;g;g;o;g;g;o;x;m;o;o;g;o;g;o;o;o;o;
x;x;g;x;g;x;x;g;x;g;x;g;g;g;g;g;o;g;o;o;o;o;g;o;o;o;g;g;o;x;x;x;o;g;o;g;o;g;g;g;
x;x;m;x;x;x;x;g;x;g;x;x;x;o;o;o;o;g;o;o;o;o;o;o;o;o;g;g;o;o;x;o;o;o;o;g;g;g;o;o;
x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;o;o;o;o;o;o;o;o;o;o;g;g;o;o;o;o;o;o;o;g;o;o;o;o;
1 x w x w w w x w w w w w w w w w w w w g w x x x x x x x x x x x x x x x x g x x
2 x x x w x x x x g g g g g g g g g w g g g g g g g x x x g g g g x x x g g g g x
3 g g x w w x g x g w w w w g w w g g g w w w w w g g g g g w w g x x x g w w g x
4 x g x w m x g g g g g g w g w g g w g g g g g w w g w g w w g g g g g g g w g w
5 x g g g g x x g o o g w w w w g w w g w g w w w w w w w w w w w g w w w w w w w
6 x x g x g g g g g o g w g w w w w w g w g g g w g w g w g w g w g w g g g g w w
7 x x x x g o o o o o g g g g g w g w w w w w w w g w g g g w g w g w w g w w w w
8 g g g g g g g g g o o g o o g g g g g w g w g w g w g w w w g w g g g g g w x w
9 x x x x x g o g o o o g o o o g w w w w g w g g g g g g g w g w g w w w w w w x
10 x g x g g g o o o g o g g g o g w g w w g g g w w w w w g g g g g w g g g g g g
11 g g g g x g g g o g o o g o o g g g g g g w w w w g w w w w w w w w g o o o o o
12 x x x g x g o o o g g o g o o o o o o o g g g g g g g g g g g g g g g g g o o w
13 x g g g x g g g g g o o g g g g g g o g g o o o o o g g o o o o o o o o o o o w
14 x x g x x x g o g o o o o o o o o g o o g g g g g o g g g g g g g g g g g o g o
15 x x x x g x g o o o o g o o g g o g o g g o g o o o g g o o o o o g o o o o g g
16 x x g g g g g g o g g g g g g o o o o g o o g g g o g g o x x x o g g g g g g o
17 x m g x g x x g g g x g o o o o o g g g o o g g g o g g o x m o o g o g o o o o
18 x x g x g x x g x g x g g g g g o g o o o o g o o o g g o x x x o g o g o g g g
19 x x m x x x x g x g x x x o o o o g o o o o o o o o g g o o x o o o o g g g o o
20 x x x x x x x x x x x x x x x x o o o o o o o o o o g g o o o o o o o g o o o o

104
map.php Normal file
View File

@ -0,0 +1,104 @@
<?
error_reporting(E_ALL);
session_start();
if (!isset($_GET["name"])) $_GET["name"] ="map";
//Читаем карту
$handle = fopen(htmlspecialchars($_GET["name"]).".csv", "r");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE){
$map[]=$data;
}
fclose($handle);
//Карта в двухмерном массиве $map
//информация о квадрате
$infodot["g"]["status"] = "allow";
$infodot["m"]["status"] = "allow";
if ($_POST['action']=='down' AND $infodot[$map[$_SESSION["y"]+1][$_SESSION["x"]]]["status"]=='allow'){
$_SESSION["y"]++;
}
if ($_POST['action']=='up' AND $infodot[$map[$_SESSION["y"]-1][$_SESSION["x"]]]["status"]=='allow'){
$_SESSION["y"]--;
}
if ($_POST['action']=='left' AND $infodot[$map[$_SESSION["y"]][$_SESSION["x"]-1]]["status"]=='allow'){
$_SESSION["x"]--;
}
if ($_POST['action']=='right' AND $infodot[$map[$_SESSION["y"]][$_SESSION["x"]+1]]["status"]=='allow'){
$_SESSION["x"]++;
}
//если первый заход на карту
if (!isset($_SESSION["y"]) OR !isset($_SESSION["x"])){
$_SESSION["y"]=5;
$_SESSION["x"]=5;
}
if ($_GET["name"]=="map2") {
$_SESSION["y"]=4;
$_SESSION["x"]=2;
}
//Строим квадрат 5Х5 вокруг игрока
$y = $_SESSION["y"]-2;
$y_end = $_SESSION["y"]+2;
$x = $_SESSION["x"]-2;
$x_end = $_SESSION["x"]+2;
$q = $x;
print "<table cellpadding='0' cellspacing='0'>";
while ($y <= $y_end){
print "<tr>";
$x = $q;
while ($x <= $x_end){
if (@$map[$y][$x] == ""){ // ползут ошибки!
$map[$y][$x] = "end";
}
if ($y == $_SESSION["y"] AND $x == $_SESSION["x"]){
print "<td background = mapimg/".$map[$y][$x].".png>";
print "<img src=mapimg/point.gif>";
print "</td>";
}
else{
print "<td>";
print "<img src=mapimg/".$map[$y][$x].".png>";
print "</td>";
}
$x++;
}
print "</tr>";
$y++;
}
print "</table>";
//квадрат построен
?>
<form method="POST">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button type="submit" name="action" value="up"><img src=mapimg/m-n.png border=0></button><br>
<button type="submit" name="action" value="left"><img src=mapimg/m-w.png border=0></button>
<button type="submit" name="action" value="right"><img src=mapimg/m-e.png border=0></button><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button type="submit" name="action" value="down"><img src=mapimg/m-s.png border=0></button>
</form>
&nbsp;&nbsp;&nbsp;&nbsp;<a href=map.php?action=up><img src=mapimg/m-n.png border=0></a><br>
<a href=map.php?action=left><img src=mapimg/m-w.png border=0></a>
<a href=map.php?action=right><img src=mapimg/m-e.png border=0></a><br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href=map.php?action=down><img src=mapimg/m-s.png border=0></a><p>
<?
/*
//Описываем свойство отдельной клетки с координатами 2,2
if ($_SESSION["y"] == 2 AND $_SESSION["x"] == 2){
print "<b>В этой клетке c координатами 2,2 находится магазин";
}
else{
print "В этой клетке нет активных элементов";
}
*/
//Описываем свойство целого класса клеток
if ($map[$_SESSION["y"]][$_SESSION["x"]] == "m"){ print "<b>В этой клетке класса <i>m</i> находится магазин"; }
//Бежим на вторую карту с первой.
if ($_SESSION["y"] == 2 AND $_SESSION["x"] == 0){
print "<a href=map.php?name=map2>Сменить локацию.</a>";
}
?>

7
map2.csv Normal file
View File

@ -0,0 +1,7 @@
x;x;x;x;x
x;m;w;w;x
x;g;w;g;g
x;g;w;g;x
x;g;g;g;x
x;w;g;g;x
x;x;x;x;x
1 x x x x x
2 x m w w x
3 x g w g g
4 x g w g x
5 x g g g x
6 x w g g x
7 x x x x x

BIN
mapimg/end.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

BIN
mapimg/g.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
mapimg/m-e.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
mapimg/m-n.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
mapimg/m-s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
mapimg/m-w.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
mapimg/m.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
mapimg/o.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 825 B

BIN
mapimg/point.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
mapimg/w.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
mapimg/x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

103
showmap.php Normal file
View File

@ -0,0 +1,103 @@
<?
session_start();
if (!isset($_GET["name"])) $_GET["name"] ="map";
//Читаем карту
$handle = fopen(htmlspecialchars($_GET["name"]).".csv", "r");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE){
$map[]=$data;
}
fclose($handle);
//Карта в двухмерном массиве $map
//информация о квадрате
/*
$infodot["g"]["status"] = "allow";
$infodot["m"]["status"] = "allow";
if ($_GET['action']=='down' AND $infodot[$map[$_SESSION["y"]+1][$_SESSION["x"]]]["status"]=='allow'){
$_SESSION["y"]++;
}
if ($_GET['action']=='up' AND $infodot[$map[$_SESSION["y"]-1][$_SESSION["x"]]]["status"]=='allow'){
$_SESSION["y"]--;
}
If ($_GET['action']=='left' AND $infodot[$map[$_SESSION["y"]][$_SESSION["x"]-1]]["status"]=='allow'){
$_SESSION["x"]--;
}
if ($_GET['action']=='right' AND $infodot[$map[$_SESSION["y"]][$_SESSION["x"]+1]]["status"]=='allow'){
$_SESSION["x"]++;
}
*/
//если первый заход на карту
if (!isset($_SESSION["y"]) OR !isset($_SESSION["x"])){
$_SESSION["y"]=5;
$_SESSION["x"]=5;
}
//Строим квадрат 5Х5 вокруг игрока
#$y = $_SESSION["y"]-10;
#$y_end = $_SESSION["y"]+10;
#$x = $_SESSION["x"]-20;
#$x_end = $_SESSION["x"]+20;
#$q = $x;
$y = -1;
$y_end = 20;
$x = -1;
$x_end = 40;
$q = $x;
print "<table cellpadding='0' cellspacing='0'>";
while ($y <= $y_end){
print "<tr>";
$x = $q;
while ($x <= $x_end){
if (@$map[$y][$x] == ""){ // ползут ошибки!
$map[$y][$x] = "end";
}
if ($y == $_SESSION["y"] AND $x == $_SESSION["x"]){
print "<td background = mapimg/".$map[$y][$x].".png>";
print "<img src=mapimg/point.gif>";
print "</td>";
}
else{
print "<td background = mapimg/g.png>";
print "<img src=mapimg/".$map[$y][$x].".png>";
print "</td>";
}
$x++;
}
print "</tr>";
$y++;
}
print "</table>";
//квадрат построен
/*
?>
&nbsp;&nbsp;&nbsp;&nbsp;<a href=map.php?action=up><img src=mapimg/m-n.png border=0></a><br>
<a href=map.php?action=left><img src=mapimg/m-w.png border=0></a>
<a href=map.php?action=right><img src=mapimg/m-e.png border=0></a><br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href=map.php?action=down><img src=mapimg/m-s.png border=0></a><p>
<?
*/
/*
//Описываем свойство отдельной клетки с координатами 2,2
if ($_SESSION["y"] == 2 AND $_SESSION["x"] == 2){
print "<b>В этой клетке c координатами 2,2 находится магазин";
}
else{
print "В этой клетке нет активных элементов";
}
*/
//Описываем свойство целого класса клеток
/*
if ($map[$_SESSION["y"]][$_SESSION["x"]] == "m"){
print "<b>В этой клетке класса <i>m</i> находится магазин";
}
*/
?>