Пример #1
0
        public void VisaSpelvärld_borde_visa_fienden()
        {
            // Arrange
            var fiendegrafik = Substitute.For <IGrafik>();
            var spelvärld    = Substitute.For <ISpelvärld>();

            spelvärld.Fienden.Returns(new List <Fiende>
            {
                new Fiende
                {
                    Grafik   = fiendegrafik,
                    Position = new Spelvärldsposition(2, 3)
                }
            });
            var konverterare = Substitute.For <IPositionskonverterare>();

            konverterare.TillPunkt(new Spelvärldsposition(2, 3)).Returns(new Skärmposition(20, 30));
            var visaSpelvärld = new VisaSpelvärld(spelvärld, konverterare);

            // Act
            visaSpelvärld.Visa();

            // Assert
            fiendegrafik.Received().Visa(new Skärmposition(20, 30));
        }
Пример #2
0
        public void VisaSpelvärld_borde_inte_krascha_när_det_inte_finns_något_att_visa()
        {
            // Arrange
            var konverterare  = new Positionskonverterare(new Skärmyta(1, 1));
            var visaSpelvärld = new VisaSpelvärld(Substitute.For <ISpelvärld>(), konverterare);

            // Act
            visaSpelvärld.Visa();

            // Assert
            Assert.Pass("No exceptions thrown.");
        }
Пример #3
0
        public void VisaSpelvärld_borde_visa_miljö()
        {
            // Arrange
            var miljögrafik = Substitute.For <IGrafik>();
            var spelvärld   = Substitute.For <ISpelvärld>();

            spelvärld.MiljöGrafik.Returns(miljögrafik);
            var visaSpelvärld = new VisaSpelvärld(spelvärld, Substitute.For <IPositionskonverterare>());

            // Act
            visaSpelvärld.Visa();

            // Assert
            miljögrafik.Received().Visa(Arg.Any <Skärmposition>());
        }
Пример #4
0
        public void VisaSpelvärld_borde_visa_huvudkaraktären_på_den_position_som_bestäms_av_kameran()
        {
            // Arrange
            var huvudkaraktärensGrafik = Substitute.For <IGrafik>();
            var konverterare           = new Positionskonverterare(new Skärmyta(1, 1));
            var spelvärld = Substitute.For <ISpelvärld>();

            spelvärld.Huvudkaraktär.Returns(new Huvudkaraktär {
                Grafik = huvudkaraktärensGrafik, Position = new Spelvärldsposition(1, 2)
            });
            var visaSpelvärld = new VisaSpelvärld(spelvärld, konverterare);

            // Act
            visaSpelvärld.Visa();

            // Assert
            huvudkaraktärensGrafik.Received().Visa(new Skärmposition(1, 2));
        }
Пример #5
0
        public void Huvudkaraktären_borde_visas_ovanpå_miljön()
        {
            // Arrange
            var grafik        = Substitute.For <IGrafik>();
            var huvudkaraktär = new Huvudkaraktär {
                Grafik = grafik, Position = new Spelvärldsposition(1, 2)
            };
            var spelvärld = Substitute.For <ISpelvärld>();

            spelvärld.MiljöGrafik.Returns(grafik);
            spelvärld.Huvudkaraktär.Returns(huvudkaraktär);
            var konverterare = Substitute.For <IPositionskonverterare>();

            konverterare.TillPunkt(new Spelvärldsposition(1, 2)).Returns(new Skärmposition(8, 16));
            var visaSpelvärld = new VisaSpelvärld(spelvärld, konverterare);

            // Act
            visaSpelvärld.Visa();

            // Assert
            grafik.Received().Visa(new Skärmposition(8, 16));
        }
Пример #6
0
        private void Initiera()
        {
            var tileset = new BildWrapper("Images/tiles.png");

            var inställningar = new SpelfönsterInställningar
            {
                Fullskärm   = true,
                DoldaKanter = true,
                VSync       = true,
                Bredd       = 16 * 32,
                Höjd        = 16 * 32
            };
            var tangentmappning = new Dictionary <Key, Tangent> {
                { Key.Right, Tangent.Höger },
                { Key.Left, Tangent.Vänster },
                { Key.Up, Tangent.Upp },
                { Key.Down, Tangent.Ner },
                { Key.Escape, Tangent.Escape }
            };

            _fönster = new Spelfönster(tangentmappning, inställningar);
            var spelvärld             = new Spelvärld();
            var grafikkommandon       = new GLWrapper();
            var brickstorlek          = new Rektangel(16, 16);
            var kamera                = new Kamera(new Skärmyta(100, 100));
            var positionskonverterare = new Positionskonverterare(new Skärmyta(16, 16));

            var radioaktivInsektBricka = new Bricka(grafikkommandon, new Skärmposition(5 * 16, 0), new Skärmyta(16, 16));
            var tomBricka           = new Bricka(grafikkommandon, new Skärmposition(15 * 16, 15 * 16), new Skärmyta(16, 16));
            var takBricka           = new Bricka(grafikkommandon, new Skärmposition(2 * 16, 1 * 16), new Skärmyta(16, 16));
            var kabel1Bricka        = new Bricka(grafikkommandon, new Skärmposition(3 * 16, 1 * 16), new Skärmyta(16, 16));
            var kabel2Bricka        = new Bricka(grafikkommandon, new Skärmposition(4 * 16, 1 * 16), new Skärmyta(16, 16));
            var takMedRevaBricka    = new Bricka(grafikkommandon, new Skärmposition(1 * 16, 1 * 16), new Skärmyta(16, 16));
            var ammoBricka          = new Bricka(grafikkommandon, new Skärmposition(0 * 16, 1 * 16), new Skärmyta(16, 16));
            var huvudkaraktärBricka = new Bricka(grafikkommandon, new Skärmposition(0 * 16, 0 * 16), new Skärmyta(16, 16));
            var medicinBricka       = new Bricka(grafikkommandon, new Skärmposition(3 * 16, 2 * 16), new Skärmyta(16, 16));
            var paradisBricka       = new Bricka(grafikkommandon, new Skärmposition(3 * 16, 3 * 16), new Skärmyta(16, 16));
            var hälsomätarram       = new Bricka(grafikkommandon, new Skärmposition(80, 32), new Skärmyta(80, 16));
            var hälsomätargrönt     = new Bricka(grafikkommandon, new Skärmposition(80, 48), new Skärmyta(80, 16));

            spelvärld.Huvudkaraktär = new Huvudkaraktär(4)
            {
                Position = new Spelvärldsposition(1, 1),
                Grafik   = huvudkaraktärBricka
            };

            var skärm = new Skärm();

            var ucVisaSpelvärld = new VisaSpelvärld(spelvärld, positionskonverterare);
            var ucVisaStatus    = new VisaStatus(hälsomätarram, hälsomätargrönt, spelvärld.Huvudkaraktär, skärm);

            var karta       = SkapaKarta();
            var hinderlista = new[] { 0 };
            var hinderkarta = karta.SkapaHinderkarta(hinderlista);

            var ucFlyttaVarelser      = new FlyttaVarelser(spelvärld, hinderkarta);
            var ucUtdelaSkada         = new UtdelaSkada(spelvärld);
            var ucDödaKritisktSkadade = new DödaKritisktSkadade(spelvärld);
            var ucUppdateraSpelvärld  = new UppdateraSpelvärld(ucFlyttaVarelser, ucUtdelaSkada, ucDödaKritisktSkadade);
            var openTKHanterare       = new GrafikHändelser(grafikkommandon, tileset, _fönster, ucVisaSpelvärld, kamera, ucVisaStatus, skärm);
            var kontrollhändelser     = new KontrollHändelser(ucUppdateraSpelvärld, _fönster);

            _fönster.Laddare(openTKHanterare);
            _fönster.StorleksÄndrare(openTKHanterare);
            _fönster.Uppdaterare(openTKHanterare);
            _fönster.Visare(openTKHanterare);
            _fönster.Tangentbordsmottagare(kontrollhändelser);

            var omgivningensBrickor = new Bricka[] {
                tomBricka,
                takBricka,
                kabel1Bricka,
                kabel2Bricka,
                takMedRevaBricka,
                paradisBricka
            };

            spelvärld.MiljöGrafik = new Brickfält(omgivningensBrickor, karta.Indexar, karta.Bredd, new Skärmyta(16, 16));

            var slumpgenerator = new Random();
            var väderstrecken  = new List <Spelvärldsposition>
            {
                new Spelvärldsposition(1, 0),
                new Spelvärldsposition(0, 1),
                new Spelvärldsposition(-1, 0),
                new Spelvärldsposition(0, -1)
            };

            var irraRunt = new SekvensFörflyttning(väderstrecken, new SekvensFörflyttning.SlumpmässigIndexgenerator(slumpgenerator));

            spelvärld.Fienden = new List <Fiende>
            {
                new Fiende {
                    Position           = new Spelvärldsposition(5, 5),
                    Grafik             = radioaktivInsektBricka,
                    Riktningsgenerator = irraRunt
                },
                new Fiende {
                    Position           = new Spelvärldsposition(13, 5),
                    Grafik             = radioaktivInsektBricka,
                    Riktningsgenerator = irraRunt
                }
            };
        }