Files
Polarized/polarized.pde
2026-01-09 15:28:54 +01:00

437 lines
8.2 KiB
Plaintext

int map[][] = {
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0}
};
int player_pos[][] = {
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0}
};
int s_width = 1920;
int s_height = 1080;
// Image loading
PImage floor_1;
PImage floor_2;
PImage floor_3;
PImage input_frame;
PImage player;
PImage item;
PImage sky;
PFont font;
PFont font_term;
String entry = "> ";
String log[] = {""};
boolean is_summoned = false;
void
tolog(String str)
{
log = append(log, str);
}
void
startup()
{
tolog("Welcome to Polarized.");
tolog("");
tolog("First of all you had to summon");
tolog("your player.");
tolog("");
tolog("To do so type help.");
tolog("");
}
void
setup()
{
size(800, 400);
floor_1 = loadImage("floor_1.png");
floor_2 = loadImage("floor_2.png");
floor_3 = loadImage("floor_3.png");
sky = loadImage("sky.jpg");
player = loadImage("player.png");
item = loadImage("item.png");
input_frame = loadImage("input_frame.png");
font = createFont("8bitlim.ttf", 16);
font_term = createFont("lunchds.ttf", 16);
textFont(font);
startup();
}
int time = 0;
int fps = 30;
void
help()
{
tolog("Here is the lst of all the commands");
tolog("available");
tolog("");
tolog("help - show this page.");
tolog("");
if (!is_summoned)
tolog("summon [0-7] [A-H] - create your player.");
else
{
tolog("move [UP, LEFT, RIGHT, DOWN] - move the");
tolog("player");
}
tolog("");
}
void
createPlayer(int row, char c)
{
int col = 0;
switch(c)
{
case 'A':
col = 0;
break;
case 'B':
col = 1;
break;
case 'C':
col = 2;
break;
case 'D':
col = 3;
break;
case 'E':
col = 4;
break;
case 'F':
col = 5;
break;
case 'G':
col = 6;
break;
case 'H':
col = 7;
break;
}
player_pos[col][row] = 1;
map[row][col] = 2;
}
void
summon()
{
tolog("");
if (entry.charAt(9) >= '0' && entry.charAt(9) < '9')
{
if (entry.charAt(11) == 'A' || entry.charAt(11) == 'B' || entry.charAt(11) == 'C' || entry.charAt(11) == 'D' || entry.charAt(11) == 'E' || entry.charAt(11) == 'F' || entry.charAt(11) == 'G' || entry.charAt(11) == 'H')
{
tolog("Player was summoned in " + entry.substring(9, 12) + ".");
tolog("");
tolog("Nice now you can try to move in each");
tolog("directions now.");
tolog("Consult your objectives with obj command.");
tolog("");
is_summoned = true;
createPlayer(entry.charAt(9) - '0', entry.charAt(11));
tolog("New commands added type help");
tolog("");
}
else
{
tolog("Wrong position\n");
is_summoned = false;
}
}
else
{
tolog("Wrong position\n");
is_summoned = false;
}
}
void
moveDown()
{
int x = 0;
int y = 0;
boolean is_moved = false;
while (y < 8)
{
x = 0;
while (x < 8)
{
if (player_pos[x][y] == 1 && !is_moved)
{
if (y != 7)
{
if (player_pos[x][y + 1] == 0)
{
player_pos[x][y + 1] = 1;
player_pos[x][y] = 0;
is_moved = true;
}
else
tolog("There is something on your way.");
}
else
tolog("suicide is not a solution.");
}
x++;
}
y++;
}
}
void
moveUp()
{
int x = 0;
int y = 0;
boolean is_moved = false;
while (y < 8)
{
x = 0;
while (x < 8)
{
if (player_pos[x][y] == 1 && !is_moved)
{
if (y != 0)
{
if (player_pos[x][y - 1] == 0)
{
player_pos[x][y - 1] = 1;
player_pos[x][y] = 0;
is_moved = true;
}
else
tolog("There is something on your way.");
}
else
tolog("suicide is not a solution.");
}
x++;
}
y++;
}
}
void
moveLeft()
{
int x = 0;
int y = 0;
boolean is_moved = false;
while (y < 8)
{
x = 0;
while (x < 8)
{
if (player_pos[x][y] == 1 && !is_moved)
{
if (x != 0)
{
if (player_pos[x - 1][y] == 0)
{
player_pos[x - 1][y] = 1;
player_pos[x][y] = 0;
is_moved = true;
}
else
tolog("There is something on your way.");
}
else
tolog("suicide is not a solution.");
}
x++;
}
y++;
}
}
void
moveRight()
{
int x = 0;
int y = 0;
boolean is_moved = false;
while (y < 8)
{
x = 0;
while (x < 8)
{
if (player_pos[x][y] == 1 && !is_moved)
{
if (x != 7)
{
if (player_pos[x + 1][y] == 0)
{
player_pos[x + 1][y] = 1;
player_pos[x][y] = 0;
is_moved = true;
}
else
tolog("There is something on youur way.");
}
else
tolog("suicide is not a solution.");
}
x++;
}
y++;
}
}
void
move()
{
if (entry.substring(7, entry.length()).toLowerCase().equals("up"))
moveUp();
else if (entry.substring(7, entry.length()).toLowerCase().equals("down"))
moveDown();
else if (entry.substring(7, entry.length()).toLowerCase().equals("left"))
moveLeft();
else if (entry.substring(7, entry.length()).toLowerCase().equals("right"))
moveRight();
else
tolog("Wrong arguments.");
}
void
command_logic()
{
if (entry.equals("> help"))
help();
else if (entry.length() == 12 && entry.substring(2, 8).equals("summon") && is_summoned == false)
summon();
else if (entry.length() > 7 && entry.substring(2, 6).equals("move") && is_summoned)
move();
else
{
tolog(entry.substring(2, entry.length()) + " command not found");
tolog("");
}
}
void
keyPressed()
{
entry = entry + key;
if (keyCode == BACKSPACE)
{
if (entry.length() > 3)
entry = entry.substring( 0, entry.length()-2 );
else
entry = entry.substring( 0, entry.length()-1 );
}
if (keyCode == SHIFT)
entry = entry.substring( 0, entry.length()-1 );
if (keyCode == ENTER)
{
entry = entry.substring( 0, entry.length()-1 );
if (entry.length() > 2)
{
tolog(entry);
command_logic();
}
entry = "> ";
}
}
void
draw_map()
{
int offset_x = 180;
int offset_y = 100;
int x = 0;
int y = 0;
background(50);
image(sky, 0, 0, 800, 400);
stroke(200);
line(400, 0, 400, 400);
while (y < 8)
{
x = 0;
while (x < 8)
{
if (map[y][x] == 0)
image(floor_1, offset_x + (x - y) * 20, offset_y + (y + x) * 12);
if (map[y][x] == 1)
image(floor_2, offset_x + (x - y) * 20, offset_y + (y + x) * 12);
if (map[y][x] == 2)
image(floor_3, offset_x + (x - y) * 20, offset_y + (y + x) * 12);
x++;
}
y++;
}
text("0", 190, 100); // -25 +10
text("1", 170, 110);
text("2", 145, 125);
text("3", 125, 135);
text("4", 105, 145);
text("5", 85, 160);
text("6", 60, 170);
text("7", 40, 185);
text("A", abs(190 - 405), 100); // -25 +10
text("B", abs(170 - 405), 110);
text("C", abs(145 - 405), 125);
text("D", abs(125 - 405), 135);
text("E", abs(105 - 405), 145);
text("F", abs(85 - 405), 160);
text("G", abs(60 - 405), 170);
text("H", abs(40 - 405), 185);
image(input_frame, 400, 0);
x = 0;
y = 0;
while (y < 8)
{
x = 0;
while (x < 8)
{
if (player_pos[x][y] == 1)
image(player, offset_x + (x - y) * 20 - 4, offset_y + (y + x) * 12 - 45, 60, 70);
if (player_pos[x][y] == 2)
image(item, offset_x + (x - y) * 20 + 15, offset_y + (y + x) * 12, 16, 16);
x++;
}
y++;
}
textFont(font_term);
text(entry, 415, 375);
int i = 0;
int j = 0;
while (i + j < log.length)
{
while (log.length - j > 17)
j++;
text(log[i + j], 415, i * 20);
i++;
}
textFont(font);
}
void
draw()
{
draw_map();
time++;
if (time > fps)
time = 0;
}