
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.robotika.sk/robowiki/index.php?action=history&amp;feed=atom&amp;title=Space_Invaders-_Code</id>
		<title>Space Invaders- Code - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.robotika.sk/robowiki/index.php?action=history&amp;feed=atom&amp;title=Space_Invaders-_Code"/>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Space_Invaders-_Code&amp;action=history"/>
		<updated>2026-04-13T20:54:15Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Space_Invaders-_Code&amp;diff=11452&amp;oldid=prev</id>
		<title>Robot: Created page with &quot;Return back to project page: Spike Prime - Space Invaders - Unax Murua, Eric Ayestaran, Leire Sáez de Cortázar |Space Invaders - Unax Murua, Eric Ayestaran, Leire Sáez de...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Space_Invaders-_Code&amp;diff=11452&amp;oldid=prev"/>
				<updated>2024-12-09T20:38:10Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;Return back to project page: Spike Prime - Space Invaders - Unax Murua, Eric Ayestaran, Leire Sáez de Cortázar |Space Invaders - Unax Murua, Eric Ayestaran, Leire Sáez de...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Return back to project page: [[Spike Prime - Space Invaders - Unax Murua, Eric Ayestaran, Leire Sáez de Cortázar |Space Invaders - Unax Murua, Eric Ayestaran, Leire Sáez de Cortázar]]&lt;br /&gt;
&lt;br /&gt;
Python code for the Arrows project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=python&amp;gt; &lt;br /&gt;
from hub import light_matrix, port&lt;br /&gt;
import time, random&lt;br /&gt;
import force_sensor&lt;br /&gt;
&lt;br /&gt;
# Constants&lt;br /&gt;
GRID_SIZE = 5&lt;br /&gt;
LEFT_LIMIT = 0&lt;br /&gt;
RIGHT_LIMIT = 4&lt;br /&gt;
SHIP_ROW = 4&lt;br /&gt;
ship_x = 2&lt;br /&gt;
score = 0&lt;br /&gt;
enemy_positions = []&lt;br /&gt;
bullet_x = -1&lt;br /&gt;
bullet_y = -1&lt;br /&gt;
game_over = False&lt;br /&gt;
enemy_speed = 10&lt;br /&gt;
min_enemy_speed = 2&lt;br /&gt;
move_timer = 0&lt;br /&gt;
&lt;br /&gt;
def display_game():&lt;br /&gt;
    light_matrix.clear()&lt;br /&gt;
&lt;br /&gt;
    for enemy in enemy_positions:&lt;br /&gt;
        light_matrix.set_pixel(enemy[0], enemy[1], 50)&lt;br /&gt;
&lt;br /&gt;
    light_matrix.set_pixel(ship_x, SHIP_ROW, 100)&lt;br /&gt;
&lt;br /&gt;
    if bullet_y &amp;gt;= 0:&lt;br /&gt;
        light_matrix.set_pixel(bullet_x, bullet_y, 75)&lt;br /&gt;
&lt;br /&gt;
def update_ship_position():&lt;br /&gt;
    global ship_x&lt;br /&gt;
    force_value_left = force_sensor.force(port.F)&lt;br /&gt;
    force_value_right = force_sensor.force(port.D)&lt;br /&gt;
&lt;br /&gt;
    if force_value_right &amp;gt; 5:&lt;br /&gt;
        ship_x = min(RIGHT_LIMIT, ship_x + 1)&lt;br /&gt;
    elif force_value_left &amp;gt; 5:&lt;br /&gt;
        ship_x = max(LEFT_LIMIT, ship_x - 1)&lt;br /&gt;
&lt;br /&gt;
def update_bullet():&lt;br /&gt;
    global bullet_x, bullet_y, score&lt;br /&gt;
    if bullet_y == -1:&lt;br /&gt;
        if force_sensor.force(port.C) &amp;gt; 5:&lt;br /&gt;
            bullet_x = ship_x&lt;br /&gt;
            bullet_y = SHIP_ROW - 1&lt;br /&gt;
&lt;br /&gt;
    elif bullet_y &amp;gt;= 0:&lt;br /&gt;
        for enemy in enemy_positions:&lt;br /&gt;
            if enemy[0] == bullet_x and enemy[1] == bullet_y:&lt;br /&gt;
                score += 1&lt;br /&gt;
                enemy_positions.remove(enemy)&lt;br /&gt;
                bullet_y = -1&lt;br /&gt;
                return&lt;br /&gt;
&lt;br /&gt;
        bullet_y -= 1&lt;br /&gt;
&lt;br /&gt;
        if bullet_y &amp;lt; 0:&lt;br /&gt;
            bullet_y = -1&lt;br /&gt;
&lt;br /&gt;
def check_game_over():&lt;br /&gt;
    global game_over&lt;br /&gt;
    for enemy in enemy_positions:&lt;br /&gt;
        if enemy[1] == SHIP_ROW:&lt;br /&gt;
            game_over = True&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
def move_enemies_down():&lt;br /&gt;
    global enemy_positions&lt;br /&gt;
    new_positions = []&lt;br /&gt;
&lt;br /&gt;
    for enemy in enemy_positions:&lt;br /&gt;
        new_y = enemy[1] + 1&lt;br /&gt;
        if new_y &amp;lt; GRID_SIZE:&lt;br /&gt;
            new_positions.append((enemy[0], new_y))&lt;br /&gt;
&lt;br /&gt;
    enemy_positions = new_positions&lt;br /&gt;
&lt;br /&gt;
def generate_static_enemies():&lt;br /&gt;
    global enemy_positions&lt;br /&gt;
    enemy_positions = []&lt;br /&gt;
    for _ in range(5):&lt;br /&gt;
        x = random.randint(0, GRID_SIZE - 1)&lt;br /&gt;
        y = random.randint(0, 1)&lt;br /&gt;
        if (x, y) not in enemy_positions:&lt;br /&gt;
            enemy_positions.append((x, y))&lt;br /&gt;
&lt;br /&gt;
generate_static_enemies()&lt;br /&gt;
&lt;br /&gt;
while not game_over:&lt;br /&gt;
    update_ship_position()&lt;br /&gt;
    update_bullet()&lt;br /&gt;
&lt;br /&gt;
    if move_timer &amp;gt;= enemy_speed * 10:&lt;br /&gt;
        move_enemies_down()&lt;br /&gt;
        check_game_over()&lt;br /&gt;
        move_timer = 0&lt;br /&gt;
&lt;br /&gt;
    display_game()&lt;br /&gt;
    time.sleep(0.1)&lt;br /&gt;
    move_timer += 1&lt;br /&gt;
&lt;br /&gt;
    if len(enemy_positions) == 0:&lt;br /&gt;
        generate_static_enemies()&lt;br /&gt;
        enemy_speed = max(enemy_speed - 1, min_enemy_speed)&lt;br /&gt;
&lt;br /&gt;
light_matrix.clear()&lt;br /&gt;
print(&amp;quot;Game Over!&amp;quot;)&lt;br /&gt;
print(&amp;quot;Score: &amp;quot;, score)&lt;br /&gt;
light_matrix.write(&amp;quot;Score: &amp;quot; + str(score))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robot</name></author>	</entry>

	</feed>