Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6ad8410

Browse files
committed
Added eng settings
1 parent 13a76cb commit 6ad8410

File tree

2 files changed

+28
-14
lines changed

2 files changed

+28
-14
lines changed

‎robots/app.py‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
from robots.ui.ui import Console, BattleWindow
2+
from robots.engine.engine import Engine
3+
import pygame
14
import os
25
import time
3-
import pygame
46

5-
fromrobots.engine.engineimportEngine
6-
fromrobots.ui.uiimportConsole, BattleWindow
7+
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] ="hide"
8+
79

810
os.environ["SDL_VIDEO_CENTERED"] = "0"
911
os.environ["DISPLAY"] = ":0"
@@ -13,7 +15,7 @@ class Battle(object):
1315
def __init__(self, robots, size, num_rounds=-1) -> None:
1416
self.eng = Engine(robots, size)
1517
self.eng.init()
16-
self.bw = BattleWindow(size)
18+
self.bw = BattleWindow(size)
1719
self.bw.set_battle(self.eng)
1820
self.num_rounds = num_rounds
1921
self.running = True
@@ -51,6 +53,7 @@ def on_command(self, command, args):
5153
def handle_event(self, event):
5254
print("Battle", event)
5355

56+
5457
class App(object):
5558
"""Root rendering class"""
5659

@@ -68,6 +71,7 @@ def __init__(self, size=(600, 400), fps_target=30):
6871
self.render_interval = 1.0 / self.render_rate
6972

7073
pygame.init()
74+
pygame.display.set_caption(f"PyRobo - PID {os.getpid()}")
7175
pygame.font.init()
7276
self._running = True
7377
self.screen = pygame.display.set_mode(self.size, pygame.HWSURFACE | pygame.DOUBLEBUF | pygame.RESIZABLE)

‎robots/engine/engine.py‎

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ def __init__(self, robot):
2828
self.turret_rotation_velocity = 0.0
2929
self.radar_rotation_velocity = 0.0
3030

31-
3231
def flush_state(self):
3332
"""Push read only values back to the Robot class"""
3433
self.robot.energy = self.energy
@@ -73,14 +72,26 @@ def acceleration(r):
7372
return 0.0
7473

7574

75+
def bullet_damage(bullet):
76+
damage = 4 * bullet.power
77+
if bullet.power > 1:
78+
damage += 2 * (bullet.power - 1)
79+
return damage
80+
81+
82+
def energy_on_hit(bullet):
83+
return
84+
85+
7686
class Engine(object):
77-
def __init__(self, robots, size, bullet_self_collisions=True, rate=-1):
87+
def __init__(self, robots, size, bullet_collisions_enabled=True, gun_heat_enabled=True, rate=-1):
7888
self.robots = robots
7989
self.size = size
8090

81-
# Collision settings
82-
self.bullet_self_collisions = bullet_self_collisions
83-
self.robot_collisions = True
91+
# Options
92+
self.gun_heat_enabled = gun_heat_enabled
93+
self.bullet_collisions_enabled = bullet_collisions_enabled
94+
self.robot_collisions_enabled = True
8495

8596
# Stores
8697
self.data = None
@@ -91,6 +102,7 @@ def __init__(self, robots, size, bullet_self_collisions=True, rate=-1):
91102
self.bounds = (offset, offset), (self.size[0] - offset, self.size[1] - offset)
92103

93104
def set_rate(self, rate):
105+
print(f"Set rate to {rate} sims/s.")
94106
self.interval = 1/rate
95107

96108
def init(self):
@@ -108,10 +120,10 @@ def init(self):
108120
def run(self):
109121
while not self.is_finished():
110122
if time.time() > self.next_sim:
111-
self.next_sim = time.time() + self.interval
112123
self.step()
113124

114125
def step(self):
126+
self.next_sim = time.time() + self.interval
115127
self.update_robots()
116128
self.flush_robot_state()
117129

@@ -177,9 +189,7 @@ def update_robots(self):
177189
colls = test_circle_to_circles(r.position, ROBOT_RADIUS, cs, 3)
178190
for bullet in bs[colls]:
179191
# Damage calculation
180-
damage = 4 * bullet.power
181-
if bullet.power > 1:
182-
damage += 2 * (bullet.power - 1)
192+
damage = bullet_damage(bullet)
183193
r.energy -= damage
184194
bullet.robot_data.energy += 3 * bullet.power
185195
self.bullets.remove(bullet)
@@ -208,7 +218,7 @@ def update_robots(self):
208218
r.radar_rotation = (r.radar_rotation + r.radar_rotation_velocity) % 360
209219

210220
# Should fire and can fire
211-
if r.robot.should_fire and (r.turret_heat <= 0.0):
221+
if r.robot.should_fire and ((r.turret_heat <= 0.0) ornotself.gun_heat_enabled):
212222
fire_power = r.robot.fire_power
213223
r.turret_heat = 1 + fire_power / 5
214224
r.energy = np.maximum(0.0, r.energy - fire_power)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /