console
let map;
let mapwidth = 30;
let dt = [];
let dtcolr=[];
let manPosX = 0;
let manPosY = 5;
let beecolor = [];
let mancolor = 0;
function preload() {
}
function setup() {
createCanvas(600, 480);
map = new Map(16,16);
beecolor[0] = color(255, 204, 0);
beecolor[1] = color(255, 0, 0);
beecolor[2] = color(0, 204, 0);
beecolor[3] = color(0, 0, 255);
beecolor[4] = color(0, 255, 255);
frameRate(5);
}
function draw() {
background(255);
noFill();
strokeWeight(1);
rect(0,0, 480, 480);
map.update();
map.draw();
}
class Map{
constructor(ln,col){
this.ln = ln;
this.col = col;
for(let i = 0; i < ln; i++)
{
for(let j = 0; j < col; j++)
{
dt[i*col+j] = 0;
}
}
for(let i=0;i<16;i++){
dt[i]=3;
}
dt[25] = 3;dt[27] = 3;dt[29] = 3;dt[31] = 3;dt[32] = 3;
for(let i=34;i<40;i++){
dt[i]=3;
}
dt[41] = 3;dt[43] = 3;dt[45] = 3;dt[47] = 3;dt[48] = 3;dt[50] = 3;dt[55] = 3;
dt[57] = 3;dt[59] = 3;dt[61] = 3;dt[63] = 3;
for(let i=66;i<72;i++){
dt[i]=3;
}
dt[64] = 3;dt[73] = 3;dt[75] = 3;dt[77] = 3;dt[79] = 3;dt[80] = 3;
dt[89] = 3;dt[91] = 3;dt[93] = 3;dt[95] = 3;
for(let i=96;i<103;i++){
dt[i]=3;
}
dt[107] = 3;dt[123] = 3;dt[139] = 3;dt[95] = 3;
dt[109] = 3;dt[125] = 3;dt[141] = 3;dt[95] = 3;dt[157] = 3;dt[173] = 3;
dt[111] = 3;dt[127] = 3;dt[143] = 3;
dt[159] = 3;dt[175] = 3;dt[191] = 3;dt[207] = 3;dt[223] = 3;
for(let i=146;i<156;i++){
dt[i]=3;
}
for(let i=178;i<190;i++){
dt[i]=3;
}
for(let i=208;i<221;i++){
dt[i]=3;
}
for(let i=240;i<256;i++){
dt[i]=3;
}
dt[112] = 3;dt[128] = 3;dt[144] = 3;dt[160] = 3;dt[176] = 3;
dt[192] = 3;
dt[224] = 3;
dt[manPosY*col+manPosX] = 2;
}
/* 根据键盘输入修改man的位置与方向 */
update(){
if (keyCode === LEFT_ARROW)
{
if(manPosY===0){}
else
{
dt[manPosY*this.col+manPosX] = 0;
manPosY = manPosY - 1;
if(dt[manPosY*this.col+manPosX] === 3)
{
manPosY = manPosY + 1;
}
else
{
if(dt[manPosY*this.col+manPosX] === 1)
{
}
}
dt[manPosY*this.col+manPosX] = 2;
}
}
if (keyCode === RIGHT_ARROW)
{
if(manPosY===(this.ln-1)){}
else
{
dt[manPosY*this.col+manPosX] = 0;
manPosY = manPosY + 1;
if(dt[manPosY*this.col+manPosX] === 3)
{
manPosY = manPosY - 1;
}
else
{
if(dt[manPosY*this.col+manPosX] === 1)
{
}
}
dt[manPosY*this.col+manPosX] = 2;
}
}
if (keyCode === UP_ARROW)
{
if(manPosX===0){}
else
{
dt[manPosY*this.col+manPosX] = 0;
manPosX = manPosX - 1;
if(dt[manPosY*this.col+manPosX] === 3)
{
manPosX = manPosX + 1;
}
else
{
if(dt[manPosY*this.col+manPosX] === 1)
{
}
}
dt[manPosY*this.col+manPosX] = 2;
}
}
if (keyCode === DOWN_ARROW)
{
if(manPosX===(this.col-1)){}
else
{
dt[manPosY*this.col+manPosX] = 0;
manPosX = manPosX + 1;
if(dt[manPosY*this.col+manPosX] === 3)
{
manPosX = manPosX - 1;
}
else
{
if(dt[manPosY*this.col+manPosX] === 1)
{
}
}
dt[manPosY*this.col+manPosX] = 2;
}
}
keyCode = 0;
}
draw(){
for(let i = 0; i < this.ln; i++)
{
for(let j = 0; j < this.col; j++)
{
if(dt[i*this.col+j] ===0)
{
}
else if(dt[i*this.col+j] ===2)
{
stroke(beecolor[mancolor]);
fill(beecolor[mancolor]);
strokeWeight(1);
circle(i*mapwidth+mapwidth/2, j*mapwidth+mapwidth/2,mapwidth-3);
}
else
{
stroke('pink');
fill('pink');
strokeWeight(1);
rect(i*mapwidth, j*mapwidth, mapwidth, mapwidth);
}
}
}
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.1.9/p5.min.js"></script>