저는 클래스 프로젝트에 인기있는 우주 총격전을 프로그램하려고하고 있으며 모듈 인스턴스화에 문제가 있습니다. 우리는 현재 발사체의 움직임을 암호화하고 발동되는 배열을 생성했습니다.SystemVerilog에서 사용 가능한 모듈 목록에서 하드웨어를 어떻게 동적으로 인스턴스화합니까?
우리는 우리 우주선이 사용자가 원하는만큼 많은 발사체를 발사하기를 원하며, 발사체는 단순히 총포에서 나타나 화면 위로 이동합니다.
이 각각의 사물에 대한 간단한 내부 상태 머신으로 변환 :
- 정지 : 사용자가 총을 발사하고 싶은 경우
- 는이 모듈을 활성화
- 초기화 :
- 총알과 일치하도록 발사체 위치를 설정하십시오. 투영 모션을 0이 아닌 값으로 설정하십시오.
- 이동 : 우리의 충돌 감지 장치는, 단순히 픽셀 의 일부 미리 정해진 양만큼 위치 단계 모듈을 해제하고 다른
- 를 중지로 이동 (적 또는 벽) 충돌을 보는 경우
나는 프로그램 된 상태 기계를 가지고 있지만, 현재 사용자가 총을 발사하면 화면의 가장자리까지 가며 다른 장면은 존재하는 동안 해고했다.
이상적으로, 내가 조사 할 수있는 일종의 사전이 있는데, 활성화 할 수있는 "사용 가능한"발사체 모듈을 찾을 수 있습니다. 상태 모듈은 해당 모듈을 다시 발사 할 수있을 때 업데이트합니다. 같은
그래서 프로세스가 보일 것이다 : 사용자가 발사체를- ... 우리의 발사체 배열의 요소는 사용할 수 없습니다 것을 발견하고
- 샷이가는 수 , 현재 모듈이 파괴 될 때까지 모듈이 다른 샷을 취하는 것을 허용하지 않습니다. 이 작업을 수행하는 내가 생각할 수있는
한 가지 방법의 하나 뜨거운 인코딩 될 밖으로 발사체 배열에서 "사용 가능"비트를 읽는 것입니다 현재 발사됩니다
0110 0011 - Projectiles 1, 2, 6, and 7 are in use
우리는 그때 그 비트들을 취하고, 뭔가를 수행하고, 가능한 가장 작은 발사체 모듈의 인덱스에 해당하는 3 번을 얻습니다. 번호 3은 사용자 입력 상태 머신이 우리의 발사체 모듈 배열에 색인을 붙이도록 출력되며, 발사 모듈은 "활성화"신호를 보냅니다.
예. 게시물에서이 점을 언급했습니다. 저는이 "발사체"중 10 개를 인스턴스화하고 있는데, 다음 발사체가 발사 될 수 있도록 언제 사용되는지 파악하려고합니다. 하드웨어가 인스턴스화되었으므로 어느 인스턴스를 사용해야하는지 파악해야합니다. 말이 돼? – ijustlovemath
질문 제목이 오도 될 때. 내 대답은 여전히 적용됩니다. 사용 가능한 비트를 상태 머신에 통합해야합니다. 코드를 보지 않고는 더 이상 당신을 도울 수 없습니다. –