Pong op de PIC XGS (10 / 36 stap)

Stap 10: Program Structure - spel lus

Het belangrijkste onderdeel van elk spel, het spel lus van timing, moet onberispelijk op veel van de oudere systemen en platforms. De Atari 2600, bijvoorbeeld, had 76 cycli van de processor naar alles op het spel logica, die geluid ook bevat. De verwerkers van vandaag zijn veel sneller, en timing is alleen een echte aandacht voor afbeeldingen duwen de envelop van de hardware.

Voor de toepassing van deze discussie, elke iteratie van de lus in het spel komt overeen met de tekening van een enkel frame en is getimed op ongeveer 30 frames per seconde wordt uitgevoerd. De game lus moet omgaan met alles, elke iteratie, maar blijven binnen de grenzen van de televisie of monitor VSYNC. De VSYNC is de langste periode van tijd dat de monitor of televisie is inactief en niet tijdens het opnieuw tekenen van het scherm. Probeert te schrijven naar videogeheugen, terwijl de monitor of televisie is probeert te lezen zal leiden tot hardware voorwaardelijke gebeurtenissen, scherm scheuren of andere grafische afwijkingen.

Wat is het eerste ding de spel lus moet omgaan? Stel voor een moment, dat alle van de spel constructies zijn onderverdeeld in het spel logica en de grafische engine. Door de code van de grafische voorop, en vervolgens verwerken, bijvoorbeeld speler ingang, een probleem ontstaat. Het probleem vloeit voort uit de initialisatie-fase. In wezen, de grafische engine zal hebben berekend het eerste frame voordat de lus eigenlijk begint en dan trekt het eerste frame opnieuw tijdens de eerste iteratie van de lus in het spel. Nu, het spel logica wordt berekend, maar het huidige frame in de lus is desynced met de berekeningen gedaan met het spel logica.

Dus, het spel logica moet eerst worden besteld, maar dat laat een paar constructies te bestellen. Stel dat de willekeurige beslissing is gemaakt dat de botsingdetectie moet eerst worden behandeld. Vervolgens, logisch, de speler input ergens na de wordt behandeld die in de lus. In wezen, de botsing wordt berekend, en dan krijgt de speler te bewegen. Een tegenstrijdigheid kan worden gevonden in ten minste één geval, maar stel dat py + h = by + 1, en de speler is verwoed probeert te verplaatsen naar beneden te compenseren. Door de definitie van de detector van de botsing, gebeurt er in dit geval geen botsing. Van de speler beweging was tevergeefs, ook al zou er het uiterlijk van de graphics engine die de bal moet hebben teruggestuurd. De tegenstrijdigheid verdere, zou de bal dan zelfs eruit het doorsneden met de peddel, als de speler verder naar beneden verplaatsen. Dit zou een frustrerende situatie voor de speler. Daarom worden behandeld als de input ergens vóór de botsingdetectie.

De AI valt in een soortgelijke situatie zoals hierboven. Als botsingdetectie wordt verwerkt voordat de AI wordt verplaatst, dat leidt tot hetzelfde probleem. Dus, de botsingdetectie moet gebeuren na zowel de AI en de speler input. De orde met betrekking tot de AI en de speler ingang maakt niet uit; de beweging van een is onafhankelijk van de andere.

Maar wanneer moet de bal verplaatsen? Houd er rekening mee dat de afbeeldingen worden bijgewerkt laatst; Daarom is de locatie van de bal die momenteel worden weergegeven door de televisie of monitor de vorige iteratie. Als het programma deze positie gebruiken om te controleren voor botsingen moest, dan ontstaat hetzelfde probleem. Daarom moet de bal de locatie eerst worden bijgewerkt.

De uiteindelijke volgorde is:

1. Ball beweging
2. speler Input
3. AI
4. botsing detectie
5. het bijwerken van het scherm van het spel

Met sommige motivatie achter hoe het spel werkt, laten we beginnen met enkele code werkt.

Gerelateerde Artikelen

Interactieve LED Beer Pong tafel

Interactieve LED Beer Pong tafel

Maak uw eigen interactieve LED Beer Pong tafel!Dit instructable zal u door alle stappen te begeleiden om het maken van een one-of-a-kind bier pong tafel compleet met kopje opsporen van RGB peulen, automatische bal sluitringen, een 32 x 12 ping pong b
Handheld Pong & Invaders op de goedkope (Arduino compatibel)

Handheld Pong & Invaders op de goedkope (Arduino compatibel)

Een retro hand-held gaming systeem goedkoop genoeg voor een kids' project. Mogelijk? Absoluut! Breng enkel op de kracht van Arduino en goedkope Chinese onderdelen!Dit project werd ontworpen als een soldeer project voor een groep van half-een-dozijn 9
Hoe maak je een ping pong ball gun

Hoe maak je een ping pong ball gun

ben je moe van office/klas/achtertuin oorlogen zonder stijlvolle of efficiënte wapens?Moe van het krijgen schot met een goedkoop plastic bb gun dat doet pijn als hel en pauzes na 5 schoten?Wilt u uw collega's / vrienden zonder zorgen over het gevaar
Pong Watch

Pong Watch

tijd voor een ander retro project, ditmaal een draagbaar - altijd op - Pong Watch. Geïnspireerd door de klassieke video game, Pong.Hier is de video van het in actie.https://Youtu.be/E3OZoS39RkkStap 1: Onderdelenlijst Horloge behuizing - goedkope 99p
De vier spelers koffietafel Pong Video Game.

De vier spelers koffietafel Pong Video Game.

UPDATE 12 APRIL 2011Belangrijk! Ik heb in kennis gesteld van een probleem met de printplaat ontwerp met betrekking tot de twee drukknoppen. Om de knoppen goed te laten werken moet u hen verbinden met de haven uitbreiding in plaats van de aansluitinge
Pimp mijn Pong

Pimp mijn Pong

maandag 9 maart:Ik krijg wind van dit Think Geek hacks contest, een week laat, franticly, ik raakte thinkgeek.com op zoek naar een gemakkelijk doden, budget en ideeën die zowel lege opdagen.Hoe zit het met die pong kit ~ 2 jaar geleden kocht ik van h
Ping-Pong Blinky

Ping-Pong Blinky

Ok, ik kocht de TI MSP-EXP430G2 Dev-bestuur een tijdje geleden, en het was over de keer dat ik het uit, zoals altijd, met LED's en Ping-Pong balletjes probeerde.Het verdwijnt tussen de kleuren.U moet:Een 2xAA batery houder, met 2 AA-batterijenEen 9v
Gemakkelijke opklapbare Ping-pong tafel

Gemakkelijke opklapbare Ping-pong tafel

Laten we een opklapbare ping pong tafel als mijn eerste DIY-project gepubliceerd in instrucables.com. De werkelijke afmetingen van een een ping pong tafel zijn 274 x 152 cm, als gevolg van de moeilijkheid van vervoer, onze tafel zal hebben de volgend
Ping Pong Ball Full colour Binary Clock

Ping Pong Ball Full colour Binary Clock

Kleur veranderende binaire klok 24 uur met behulp van ping pong ballen en full-colour LED's en een Funduino 8 * 8 matrix bord.Ik heb al een kleine 12Hr binaire klok gebouwd en het voorzien in een computer, dit werkte heel goed, maar was slechts echt
Een ping pong bal bij zal drijven!

Een ping pong bal bij zal drijven!

Hallo!Ik heb altijd gefascineerd door dingen die draadloos worden gecontroleerd door bewegingen van de hand die waarschijnlijk waarom ik een Wii eigen nu dat ik ben te denken over het. Maar ik heb niet echt gekregen om controle van de beweging van mi
PIC 12F675 programmeur/OscCal herstellen/Tester

PIC 12F675 programmeur/OscCal herstellen/Tester

Een van mijn circuits dat ik heel vaak (20-40 tegelijk), gebruik een PIC 12F675 bouwen. Ik had de volgende problemen:De planken die ik maak, heeft geen in-circuit programming mogelijkheden. Dit is om voor de lay-out van een klein PC-bestuur. Foto's m
Laat een PIC microprocessor program

Laat een PIC microprocessor program

OK hoe hard kan een PIC microprocessor programmering worden?Nou het hangt ervan af, sommige zijn harder dan anderen voor verschillende redenen, de programmeertaal, het type microprocessor, het gebruiksgemak van de software voor het bewerken en vooral
Low-Cost IC Test Clip voor PIC ICSP

Low-Cost IC Test Clip voor PIC ICSP

Ik maakte de Low Cost IC Test Clip voor ICSP voor PIC Microcontrollers.http://Neo-Sahara.com/wp/ic_test_clipStap 1: Koperen band en doek peg gebruiken.Stap 2: De koperen tape zetten op de doek peg en snijd de tapes als 2,54 mm pitch.Stap 3: Soldeer k
Ping Pong Ball Sparkler

Ping Pong Ball Sparkler

Ik vonk beetje.Stap 1: verzamelen Verzamelen een ping pong bal en een doos of twee van de Sprite bommenStap 2: Maak een gat Maakt een klein gaatje in de balStap 3: Plaats ballen In Plaats van de kleine bommen binnenStap 4: gooien Kunt u over 5-6 grot