Ваш образец файла содержит маркер «-» в ln 3, который может быть пропущен при копировании / вставке для поиска решения.
Входной файл
<?xml version="1.0" encoding="UTF-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
<url value="http://example.org/fhir/StructureDefinition/MyObservation"/>
<name value="MyObservation"/>
<status value="draft"/>
<fhirVersion value="3.0.1"/>
<kind value="resource"/>
<abstract value="false"/>
<type value="Observation"/>
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Observation"/>
<derivation value="constraint"/>
</StructureDefinition>
Скрипт
from xml.dom.minidom import parse # use minidom for this task
dom = parse('june.xml') #read in your file
search = "http://example.org/fhir/StructureDefinition/MyObservation" #set search value
replace = "http://example.org/fhir/StructureDefinition/NewObservation" #set replace value
res = dom.getElementsByTagName('url') #iterate over url tags
for element in res:
if element.getAttribute('value') == search: #in case of match
element.setAttribute('value', replace) #replace
with open('june_updated.xml', 'w') as f:
f.write(dom.toxml()) #update the dom, save as new xml file
Выходной файл
<?xml version="1.0" ?><StructureDefinition xmlns="http://hl7.org/fhir">
<url value="http://example.org/fhir/StructureDefinition/NewObservation"/>
<name value="MyObservation"/>
<status value="draft"/>
<fhirVersion value="3.0.1"/>
<kind value="resource"/>
<abstract value="false"/>
<type value="Observation"/>
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Observation"/>
<derivation value="constraint"/>
</StructureDefinition>
Я предполагаю, что Вы могли заставить механизм физики возразить, что Вы обновляете непрерывно в данных временных интервалах. Это проверило бы на коллизии, переместить шар, вычислить углы возврата, и т.д.
РЕДАКТИРОВАНИЕ № 1: Для добавления немного большего количества детали "игровой объект" физики сохранил бы, среди прочего, ссылки на другие игровые объекты как шар и весла. Игровой объект физики имел бы метод "обновления", который будут называть непрерывно, когда игра работает. Некоторые шаги, которые выполнил бы этот метод:
Всего несколько идей.
РЕДАКТИРОВАНИЕ № 2: уточнить с немного большим количеством фокуса OO...
Различные физические объекты, как шар и весла, сохранили бы врожденные физические состояния и параметры для себя (положение, скорость, масса, и т.д.) как свойства. Игровой объект физики по существу представил бы все уравнения физического движения как методы.
Как пример... Скажем, Вы хотите смоделировать эффекты трения о воздух на шаре. Объект шара сохранил бы свойства, такие как "скорость" и "коэффициент лобового сопротивления". Игровой объект физики имел бы метод для вычислений силы сопротивления воздуха на объекте путем выборки необходимых свойств того объекта и включения их к данному уравнению жидкого перетаскивания.
Путем инкапсуляции вещей таким образом, обновления кода могут быть легче. Например, если Вы хотите использовать другое уравнение для жидкого перетаскивания, единственная модификация, которую необходимо сделать, к соответствующему методу игрового объекта физики. Ни один из других объектов не должен быть изменен.
В типичной установке как это. Каждый объект получает шанс ответить на событие столкновения с любым объектом, с которым они, оказывается, взаимодействуют. В некотором psuedo (Python) код:
class Moveable:
def Update(self):
self.move()
class Ball(Moveable):
def Collide(self, target):
self.restore() # move out of the bounding box
# of whatever we collided into from
self.reflect() # change direction after bouncing
if target is a Paddle:
self.speedup() # Make it a little harder after hitting a paddle
class Paddle(Moveable):
def Collide(self, target):
if target is a Ball:
self.AwardSomePoints()
def main_loop():
...
while True:
for thing_one in Moveables:
thing_one.Update()
for thing_two in Moveables:
if thing_one is not thing_two
and thing_one is touching thing_two:
thing_one.collide(thing_two)
Кажется мне как суд, был бы соответствующий объект сделать проверку, или в зависимости от того, насколько сложный логика, отдельный класс для контакта с коллизиями (т.е. некоторый механизм физики как сказанный gnovice).
Шарам и веслам не придется знать друг о друге, так как они непосредственно не связаны в объектно-ориентированном смысле. Каждый не содержит другой, и при этом каждый не происходит из другого.
Мне нравится использовать методологию Model-View-Controller, так что в этом случае у вас будет игровой контроллер, который будет обрабатывать контроль столкновения, но при детализации он будет просто контролировать контроллер .. это слишком сложно объяснить здесь, и я Я не такой умный, поэтому проверь это: