This commit is contained in:
Frank DeMarco 2018-07-25 22:02:44 -04:00
parent b94d9b49c3
commit b043be4287
28 changed files with 366 additions and 138 deletions

167
NS.py
View File

@ -245,9 +245,12 @@ class Title(GameChild):
y += step y += step
def get_formatted_time(self, entry): def get_formatted_time(self, entry):
minutes, milliseconds = divmod(int(entry), 60000) if int(entry) == 5999999:
seconds, fraction = divmod(milliseconds, 1000) return "--:--.-"
return "%i:%02i.%i" % (minutes, seconds, fraction / 100) else:
minutes, milliseconds = divmod(int(entry), 60000)
seconds, fraction = divmod(milliseconds, 1000)
return "%i:%02i.%i" % (minutes, seconds, fraction / 100)
def update(self): def update(self):
if self.active: if self.active:
@ -505,7 +508,7 @@ class Introduction(Animation):
platform = self.get_game().platform platform = self.get_game().platform
if platform.get_edge_pressed() == self.TUTORIAL_MOVES[self.tutorial_index]: if platform.get_edge_pressed() == self.TUTORIAL_MOVES[self.tutorial_index]:
self.tutorial_index += 1 self.tutorial_index += 1
self.get_game().sfx["land"].play() self.get_game().sfx["land_0"].play()
if self.tutorial_index == len(self.TUTORIAL_MOVES): if self.tutorial_index == len(self.TUTORIAL_MOVES):
self.text_index += 1 self.text_index += 1
self.advance_prompt.cancel_first_press() self.advance_prompt.cancel_first_press()
@ -957,10 +960,10 @@ class Chemtrails(Sprite):
self.timer.reset() self.timer.reset()
if not boss.is_playing(boss.show_end_dialogue): if not boss.is_playing(boss.show_end_dialogue):
boss.combo() boss.combo()
boss.damaged.unhide() # boss.damaged.unhide()
self.get_game().sfx["complete_pattern"].play() self.get_game().sfx["complete_pattern_3"].play()
else: else:
self.get_game().sfx["land"].play() self.get_game().sfx["land_0"].play()
self.get_game().platform.reset_lights() self.get_game().platform.reset_lights()
def orient(self): def orient(self):
@ -1094,13 +1097,10 @@ class Boss(Animation):
self.kool_man = RainbowSprite(self, load(self.get_resource("Kool_man_waah.png")).convert_alpha(), 30) self.kool_man = RainbowSprite(self, load(self.get_resource("Kool_man_waah.png")).convert_alpha(), 30)
self.visitor = RainbowSprite(self, load(self.get_resource("Visitor.png")).convert_alpha(), 30) self.visitor = RainbowSprite(self, load(self.get_resource("Visitor.png")).convert_alpha(), 30)
self.spoopy = RainbowSprite(self, load(self.get_resource("Spoopy.png")).convert_alpha(), 30) self.spoopy = RainbowSprite(self, load(self.get_resource("Spoopy.png")).convert_alpha(), 30)
self.damaged = Sprite(self)
self.damaged.load_from_path(self.get_resource("kool/damage.png"), True)
self.damaged.location.topleft = 174, 22
self.health = Health(self) self.health = Health(self)
self.sword = Sword(self) self.sword = Sword(self)
self.register(self.brandish, self.cancel_flash, self.show_introduction_dialogue, self.register(self.brandish, self.cancel_flash, self.show_introduction_dialogue,
self.show_end_dialogue, self.cancel_damaged) self.show_end_dialogue)
self.kool_man.add_frameset([0], name="normal", switch=True) self.kool_man.add_frameset([0], name="normal", switch=True)
self.visitor.add_frameset([0], name="normal", switch=True) self.visitor.add_frameset([0], name="normal", switch=True)
self.spoopy.add_frameset([0], name="normal", switch=True) self.spoopy.add_frameset([0], name="normal", switch=True)
@ -1121,15 +1121,6 @@ class Boss(Animation):
elif self.level_index == 2: elif self.level_index == 2:
self.spoopy.set_frameset("normal") self.spoopy.set_frameset("normal")
def cancel_damaged(self):
self.damaged.hide()
if self.level_index == 0:
self.kool_man.unhide()
elif self.level_index == 1:
self.visitor.unhide()
elif self.level_index == 2:
self.spoopy.unhide()
def start_level(self, index): def start_level(self, index):
self.level_index = index self.level_index = index
self.battle_finished = False self.battle_finished = False
@ -1186,8 +1177,6 @@ class Boss(Animation):
self.advance_prompt.reset() self.advance_prompt.reset()
self.queue = None self.queue = None
self.brandish_complete = True self.brandish_complete = True
self.halt(self.cancel_damaged)
self.damaged.hide()
def deactivate(self): def deactivate(self):
self.active = False self.active = False
@ -1202,9 +1191,7 @@ class Boss(Animation):
def brandish(self): def brandish(self):
self.queue = [] self.queue = []
platform = self.get_game().platform platform = self.get_game().platform
self.damaged.hide()
if self.level_index == 0: if self.level_index == 0:
self.kool_man.hide()
if self.health.amount > 90: if self.health.amount > 90:
first = choice(platform.get_steps_from_edge(self.last_attack)) first = choice(platform.get_steps_from_edge(self.last_attack))
self.queue = [first] self.queue = [first]
@ -1377,17 +1364,9 @@ class Boss(Animation):
self.battle_finished = True self.battle_finished = True
self.halt(self.brandish) self.halt(self.brandish)
self.halt(self.cancel_flash) self.halt(self.cancel_flash)
self.halt(self.cancel_damaged)
self.sword.reset() self.sword.reset()
self.queue = [] self.queue = []
self.brandish_complete = True self.brandish_complete = True
if self.level_index == 0:
self.kool_man.unhide()
elif self.level_index == 1:
self.visitor.unhide()
elif self.level_index == 2:
self.spoopy.unhide()
self.damaged.hide()
if win: if win:
if self.level_index == 0: if self.level_index == 0:
self.kool_man.set_frameset(0) self.kool_man.set_frameset(0)
@ -1451,6 +1430,7 @@ class Boss(Animation):
def update(self): def update(self):
if self.active: if self.active:
self.backgrounds[self.level_index].update() self.backgrounds[self.level_index].update()
# self.get_display_surface().fill((0, 0, 0))
dialogue = self.get_game().dialogue dialogue = self.get_game().dialogue
if dialogue.active: if dialogue.active:
if self.advance_prompt.check_first_press(): if self.advance_prompt.check_first_press():
@ -1468,7 +1448,6 @@ class Boss(Animation):
else: else:
self.time_elapsed += self.get_game().time_filter.get_last_frame_duration() self.time_elapsed += self.get_game().time_filter.get_last_frame_duration()
Animation.update(self) Animation.update(self)
self.damaged.update()
if self.level_index == 0: if self.level_index == 0:
self.kool_man.update() self.kool_man.update()
elif self.level_index == 1: elif self.level_index == 1:
@ -1493,35 +1472,39 @@ class Sword(Animation):
def __init__(self, parent): def __init__(self, parent):
Animation.__init__(self, parent) Animation.__init__(self, parent)
image = load(self.get_resource("Sword.png")).convert_alpha() swords = self.swords = []
sprites = self.sprites = [] for path in ("Sword_kool_man.png", "Sword_visitor.png", "Sword_spoopy.png"):
# for _ in xrange(6): swords.append([])
image = load(self.get_resource(path)).convert_alpha()
for _ in xrange(6):
sprite = Sprite(self)
sprite.add_frame(image)
for angle in 270, 315, 45:
sprite.add_frame(rotate(image, angle))
sprite.add_frameset([0], name="vertical")
sprite.add_frameset([1], name="horizontal")
sprite.add_frameset([2], name="rdiagonal")
sprite.add_frameset([3], name="ldiagonal")
sprite.set_frameset("vertical")
sprite.location.center = self.get_display_surface().get_rect().center
swords[-1].append(sprite)
# for _ in xrange(self.SPRITE_COUNT):
# sprite = Sprite(self) # sprite = Sprite(self)
# sprite.add_frame(image) # sprite.load_from_path(self.get_resource("kool/"), True, query="[0-9]-*.png")
# for angle in 270, 315, 45: # for ii in xrange(6):
# sprite.add_frame(rotate(image, angle)) # sprite.add_frameset(ii)
# sprite.add_frameset([0], name="vertical") # sprite.location.topleft = 114, 0
# sprite.add_frameset([1], name="horizontal")
# sprite.add_frameset([2], name="rdiagonal")
# sprite.add_frameset([3], name="ldiagonal")
# sprite.set_frameset("vertical")
# sprite.location.center = self.get_display_surface().get_rect().center
# sprites.append(sprite) # sprites.append(sprite)
for _ in xrange(self.SPRITE_COUNT):
sprite = Sprite(self)
sprite.load_from_path(self.get_resource("kool/"), True, query="[0-9]-*.png")
for ii in xrange(6):
sprite.add_frameset(ii)
sprite.location.topleft = 114, 0
sprites.append(sprite)
self.register(self.brandish, self.lower) self.register(self.brandish, self.lower)
def reset(self): def reset(self):
self.halt(self.brandish) self.halt(self.brandish)
self.halt(self.lower) self.halt(self.lower)
self.next_index = 0 self.next_index = 0
for sprite in self.sprites: self.sprites = self.swords[self.get_game().boss.level_index]
sprite.hide() for sword in self.swords:
for sprite in sword:
sprite.hide()
def brandish(self): def brandish(self):
sprite = self.sprites[self.next_index] sprite = self.sprites[self.next_index]
@ -1529,27 +1512,28 @@ class Sword(Animation):
self.next_index += 1 self.next_index += 1
sprite.unhide() sprite.unhide()
dsr = self.get_display_surface().get_rect() dsr = self.get_display_surface().get_rect()
# if position in (NS.W, NS.E): if position in (NS.W, NS.E):
# sprite.set_frameset("vertical") sprite.set_frameset("vertical")
# sprite.location.centery = dsr.centery - 100 sprite.location.centery = dsr.centery - 100
# if position == NS.W: if position == NS.W:
# sprite.location.centerx = dsr.centerx - 100 sprite.location.centerx = dsr.centerx - 100
# else: else:
# sprite.location.centerx = dsr.centerx + 100 sprite.location.centerx = dsr.centerx + 100
# elif position in (NS.N, NS.S): elif position in (NS.N, NS.S):
# sprite.set_frameset("horizontal") sprite.set_frameset("horizontal")
# sprite.location.centerx = dsr.centerx sprite.location.centerx = dsr.centerx
# if position == NS.N: if position == NS.N:
# sprite.location.centery = dsr.centery - 200 # sprite.location.centery = dsr.centery - 200
# else: sprite.location.centery = dsr.centery - 170
# sprite.location.centery = dsr.centery else:
# else: sprite.location.centery = dsr.centery
# if position == NS.NW: else:
# sprite.set_frameset("ldiagonal") if position == NS.NW:
# else: sprite.set_frameset("ldiagonal")
# sprite.set_frameset("rdiagonal") else:
# sprite.location.center = dsr.centerx, dsr.centery - 100 sprite.set_frameset("rdiagonal")
sprite.set_frameset(position + 1) sprite.location.center = dsr.centerx, dsr.centery - 100
# sprite.set_frameset(position + 1)
self.get_game().sfx["brandish"].play() self.get_game().sfx["brandish"].play()
self.play(self.lower, delay=400, play_once=True) self.play(self.lower, delay=400, play_once=True)
if len(self.parent.unbrandished) > 0: if len(self.parent.unbrandished) > 0:
@ -1593,12 +1577,12 @@ class Sword(Animation):
else: else:
location = sprite.location.move(offset[sprite.sword_position], location = sprite.location.move(offset[sprite.sword_position],
-offset[sprite.sword_position]) -offset[sprite.sword_position])
# if sprite.sword_position == NS.N or sprite.sword_position == NS.S: if sprite.sword_position == NS.N or sprite.sword_position == NS.S:
# surface.fill(color_a, (0, 0, rect.w / 2, rect.h), BLEND_RGBA_MIN) surface.fill(color_a, (0, 0, rect.w / 2, rect.h), BLEND_RGBA_MIN)
# surface.fill(color_b, (rect.centerx, 0, rect.w / 2, rect.h), BLEND_RGBA_MIN) surface.fill(color_b, (rect.centerx, 0, rect.w / 2, rect.h), BLEND_RGBA_MIN)
# else: else:
# surface.fill(color_a, (0, 0, rect.w, rect.h / 2), BLEND_RGBA_MIN) surface.fill(color_a, (0, 0, rect.w, rect.h / 2), BLEND_RGBA_MIN)
# surface.fill(color_b, (0, rect.centery, rect.w, rect.h / 2), BLEND_RGBA_MIN) surface.fill(color_b, (0, rect.centery, rect.w, rect.h / 2), BLEND_RGBA_MIN)
surface.fill((255, 255, 255, alpha), None, BLEND_RGBA_MIN) surface.fill((255, 255, 255, alpha), None, BLEND_RGBA_MIN)
self.get_display_surface().blit(surface, location) self.get_display_surface().blit(surface, location)
offset[sprite.sword_position] += self.OFFSET offset[sprite.sword_position] += self.OFFSET
@ -1638,6 +1622,7 @@ class Health(GameChild):
self.parent.damage() self.parent.damage()
if self.amount <= 0: if self.amount <= 0:
self.amount = 0 self.amount = 0
self.get_game().sfx["complete_pattern_1"].play()
self.get_game().sfx["defeat"].play() self.get_game().sfx["defeat"].play()
self.get_game().boss.finish_battle(True) self.get_game().boss.finish_battle(True)
else: else:
@ -1678,7 +1663,7 @@ class Ending(Animation):
self.tony = load(self.get_resource("Big_Tony.png")).convert() self.tony = load(self.get_resource("Big_Tony.png")).convert()
self.slime_bag = Sprite(self) self.slime_bag = Sprite(self)
self.slime_bag.load_from_path(self.get_resource("Introduction_slime_bag.png"), True) self.slime_bag.load_from_path(self.get_resource("Introduction_slime_bag.png"), True)
self.slime_bag.location.center = self.get_display_surface().get_rect().center self.slime_bag.location.center = self.get_display_surface().get_rect().centerx, 300
self.tony_avatar = load(self.get_resource("Introduction_tony_avatar.png")).convert() self.tony_avatar = load(self.get_resource("Introduction_tony_avatar.png")).convert()
self.advance_prompt = AdvancePrompt(self) self.advance_prompt = AdvancePrompt(self)
self.register(self.start) self.register(self.start)
@ -1696,6 +1681,15 @@ class Ending(Animation):
def activate(self): def activate(self):
self.active = True self.active = True
self.play(self.start, delay=3000, play_once=True) self.play(self.start, delay=3000, play_once=True)
font = Font(self.get_resource("rounded-mplus-1m-bold.ttf"), 64)
time = self.get_game().title.get_formatted_time(self.get_game().most_recent_time)
foreground = font.render(time, True, (255, 28, 28))
# background = font.render(time, True, (0, 220, 220))
dsr = self.get_display_surface().get_rect()
self.text = RainbowSprite(self, foreground, 120)
self.text.location.midtop = dsr.centerx, 80
# self.shadow = RainbowSprite(self, background, 120)
# self.shadow.location.midtop = dsr.centerx + 2, 70
def start(self): def start(self):
self.advance_prompt.cancel_first_press() self.advance_prompt.cancel_first_press()
@ -1732,13 +1726,8 @@ class Ending(Animation):
self.advance_prompt.cancel_first_press() self.advance_prompt.cancel_first_press()
self.get_display_surface().blit(self.tony, (0, 0)) self.get_display_surface().blit(self.tony, (0, 0))
self.slime_bag.update() self.slime_bag.update()
font = Font(self.get_resource("rounded-mplus-1m-bold.ttf"), 36) # self.shadow.update()
text = font.render(self.get_game().title.get_formatted_time(self.get_game().most_recent_time), self.text.update()
True, Color("black"))
rect = text.get_rect()
ds = self.get_display_surface()
rect.midtop = ds.get_rect().centerx, 320
ds.blit(text, rect)
self.get_game().dialogue.update() self.get_game().dialogue.update()
if not wipe.is_playing() and not self.is_playing(self.start): if not wipe.is_playing() and not self.is_playing(self.start):
self.advance_prompt.update() self.advance_prompt.update()

2
config
View File

@ -9,7 +9,7 @@ data-exclude = local/, *.pyc
[display] [display]
caption = Electric Scrapeboard caption = Electric Scrapeboard
show-framerate = yes show-framerate = no
dimensions = 640, 480 dimensions = 640, 480
fullscreen = no fullscreen = no

1
index.php Symbolic link
View File

@ -0,0 +1 @@
www/index.php

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 33 KiB

BIN
resource/Sword_kool_man.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
resource/Sword_spoopy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
resource/Sword_visitor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -8,28 +8,4 @@
5999999 5999999
5999999 5999999
5999999 5999999
163063 293967
143896
177012
126061
157603
136643
177268
151171
131298
130375
134183
174976
142026
140320
132416
159243
227709
153523
155712
247891
178357
202333
278582
286504
179511

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
resource/sfx/land_0.wav Normal file

Binary file not shown.

BIN
resource/sfx/land_1.wav Normal file

Binary file not shown.

BIN
resource/sfx/land_2.wav Normal file

Binary file not shown.

BIN
resource/sfx/land_3.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,61 @@
int pushButton1 = 2;
int pushButton2 = 4;
int pushButton3 = 6;
int pushButton4 = 11;
int buttons[4] = {pushButton1, pushButton2, pushButton3, pushButton4};
void setup() {
// set the digital pin as output:
Serial.begin(9600);
pinMode(pushButton1, OUTPUT);
digitalWrite(pushButton1, LOW);
pinMode(pushButton2, INPUT_PULLUP);
pinMode(pushButton3, INPUT_PULLUP);
pinMode(pushButton4, INPUT_PULLUP);
}
void loop() {
bool received_input = false;
for (int ii = 0; ii < 4; ii++)
{
for (int jj = 0; jj < 4; jj++)
{
if (jj == ii)
{
pinMode(buttons[jj], OUTPUT);
digitalWrite(buttons[jj], LOW);
}
else
{
pinMode(buttons[jj], INPUT_PULLUP);
}
}
for (int jj = ii; jj < 4; jj++)
{
if (!(ii == jj) && !digitalRead(buttons[jj]))
{
Serial.println(analogRead(buttons[jj]));
for (int kk = 3; kk >= 0; kk--)
{
if (kk == ii || kk == jj)
{
Serial.print(1);
}
else
{
Serial.print(0);
}
}
Serial.print("\n");
received_input = true;
break;
}
}
if (received_input)
{
break;
}
}
}

View File

@ -6,9 +6,9 @@ unsigned long previousMillis = 0; // will store last time LED was updated
const long interval = 500; // interval at which to blink (milliseconds) const long interval = 500; // interval at which to blink (milliseconds)
int pushButton1 = 2; int pushButton1 = 2;
int pushButton2 = 3; int pushButton2 = 4;
int pushButton3 = 4; int pushButton3 = 6;
int pushButton4 = 5; int pushButton4 = 11;
int buttons[4] = {pushButton1, pushButton2, pushButton3, pushButton4}; int buttons[4] = {pushButton1, pushButton2, pushButton3, pushButton4};
@ -24,7 +24,6 @@ void setup() {
} }
void loop() { void loop() {
unsigned long currentMillis = millis();
bool received_input = false; bool received_input = false;
for (int ii = 0; ii < 4; ii++) for (int ii = 0; ii < 4; ii++)
{ {
@ -65,23 +64,4 @@ void loop() {
break; break;
} }
} }
if (currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis;
//if(digitalRead(pushButton1)==0){
//}
//if(digitalRead(pushButton2)==0){
// Serial.println("1-2");
//}
//if(digitalRead(pushButton3)==0){
// Serial.println("1-3");
//}
//if(digitalRead(pushButton4)==0){
// Serial.println("1-4");
//}
}
} }

BIN
www/Babycastles.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

BIN
www/Boarding_0.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 MiB

BIN
www/Boarding_1.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 MiB

BIN
www/Boarding_2.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

BIN
www/Boarding_3.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 MiB

BIN
www/Togepi.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 KiB

BIN
www/clamp.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

58
www/index.php Normal file
View File

@ -0,0 +1,58 @@
<html>
<head>
<title>Electric Scrapeboard</title>
<link rel="stylesheet" href="www/style.css" type="text/css" />
</head>
<body>
<div id="title">
<img id="plank" src="resource/Title_plank.png" />
<img id="board" src="resource/Introduction_skateboard.png" />
<img id="lizard" src="resource/littleSlimeGoop/1_downRight.png" />
</div>
<div id="question">
So you think you can skateboard, but can you <i>scrape</i>board, you slime bag?
</div>
<div id="boarding">
<a href="www/Boarding_1.gif"><img src="www/Boarding_1.gif" width="250" /></a>
<a href="www/Boarding_0.gif"><img src="www/Boarding_0.gif" width="250" /></a>
</div>
<div id="blob">
<div id="detail">
We have the <span class="highlight">technology</span> to put you on a board which is a
wireless electric <span class="highlight">video game</span> controller. Do you have the
<span class="highlight">moves</span> to skate through a gauntlet of goons all the way
to <i>Tony Hawk</i>?
<a id="frank" href="http://twitter.com/diskmem">@diskmem</a>
<a id="blake" href="http://twitter.com/snakesandrews">@snakesandrews</a>
</div>
<div id="detail2">
We have the <span class="highlight">technology</span> to put you on a board which is a
wireless electric <span class="highlight">video game</span> controller. Do you have the
<span class="highlight">moves</span> to skate through a gauntlet of goons all the way
to <i>Tony Hawk</i>?
</div>
<div id="detail3">
We have the <span class="highlight">technology</span> to put you on a board which is a
wireless electric <span class="highlight">video game</span> controller. Do you have the
<span class="highlight">moves</span> to skate through a gauntlet of goons all the way
to <i>Tony Hawk</i>?
</div>
<div id="detail4">
We have the <span class="highlight">technology</span> to put you on a board which is a
wireless electric <span class="highlight">video game</span> controller. Do you have the
<span class="highlight">moves</span> to skate through a gauntlet of goons all the way
to <i>Tony Hawk</i>?
</div>
<div id="detail5">
We have the <span class="highlight">technology</span> to put you on a board which is a
wireless electric <span class="highlight">video game</span> controller. Do you have the
<span class="highlight">moves</span> to skate through a gauntlet of goons all the way
to <i>Tony Hawk</i>?
</div>
</div>
<div id="boarding">
<a href="www/Boarding_2.gif"><img src="www/Boarding_2.gif" width="250" /></a>
<a href="www/Boarding_3.gif"><img src="www/Boarding_3.gif" width="250" /></a>
</div>
</body>
</html>

163
www/style.css Normal file
View File

@ -0,0 +1,163 @@
@import url("../../../lib/fonts/notcouriersans/regular/style.css");
@import url("../../../lib/fonts/notcouriersans/bold/style.css");
@import url("../../../lib/fonts/cantarell/bold/style.css");
body
{
/* background: url("../resource/Ink.png"); */
background-size: 100% auto;
margin: 15px;
}
div#title
{
text-align: center;
position: relative;
margin-bottom: 40px;
overflow: hidden;
}
div#title img#plank
{
border-top: 13px dotted lime;
border-radius: 100px;
border-bottom: 18px dashed lime;
z-index: 0;
}
div#title img#board
{
width: 100px;
transform: rotate(70deg);
background-color: yellow;
border: 3px groove pink;
position: absolute;
z-index: 1;
top: 50px;
left: 52%;
border-radius: 40px;
}
div#title img#lizard
{
width: 1000px;
background-color: rgba(255, 100, 100, .2);
opacity: .9;
position: absolute;
top: 0px;
z-index: 2;
left: 40%;
border-radius: 40px;
}
div#question
{
width: 65%;
margin: auto;
border: 5px double cyan;
background: #B0D0D0E0;
line-height: 28px;
color: #282828;
padding: 50px;
border-radius: 18px;
font-family: NotCourierSansBold;
font-size: 34px;
margin-bottom: 18px;
position: absolute;
top: -10px;
z-index: 0;
}
div#blob
{
position: relative;
}
div#detail
{
font-family: NotCourierSans;
font-size: 80px;
text-align: justify;
}
div#detail a
{
position: absolute;
top: 80px;
left: 30px;
font-size: 12px;
z-index: 3;
}
div#detail a#blake
{
top: 95px;
}
div#detail2
{
font-family: NotCourierSans;
font-size: 80px;
text-align: justify;
position: absolute;
top: 1px;
left: 1px;
}
div#detail3
{
font-family: NotCourierSans;
font-size: 80px;
text-align: justify;
position: absolute;
top: 2px;
left: 2px;
}
div#detail4
{
font-family: NotCourierSans;
font-size: 80px;
text-align: justify;
position: absolute;
top: 3px;
left: 3px;
/* color: gray; */
/* opacity: .5; */
}
div#detail5
{
font-family: NotCourierSans;
font-size: 80px;
text-align: justify;
position: absolute;
top: 4px;
left: 4px;
/* opacity: .3; */
}
div#photo
{
text-align: center;
margin-top: 20px;
}
div#photo img
{
width: 300px;
border: 18px ridge pink;
}
div#boarding
{
text-align: center;
}
div#boarding img
{
border-radius: 30px;
margin: 40px 20px;
border: 8px solid black;
width: 400px;
}