Étape 4: Calcul de l’écran
La classe Screen est où la plupart des calculs est faite pour obtenir le programme de travail. Pour fonctionner, la classe a besoin les importations suivantes :
La classe réelle commence comme ceci :
La carte est la même carte créée dans la classe de jeu. L’écran utilise celle-ci pour savoir où sont les murs et quelle distance le joueur qu’ils sont. Width et height définissent la taille de l’écran et devraient toujours être le même que la largeur et la hauteur de l’image créée dans la classe de jeu. Textures est une liste de toutes les textures pour que l’écran puisse accéder les pixels des textures. Après ces variables sont déclarées, elles doivent être initialisés dans le constructeur comme suit :
Maintenant son temps à écrire l’une des méthodes de la classe a: une méthode de mise à jour. La méthode update recalcule la façon dont l’écran devrait ressembler à l’utilisateur basé sur leur position sur la carte. La méthode est appelée sans cesse et retourne le tableau mis à jour de pixels à la classe de jeu. La méthode commence par « compensation » de l’écran. Il fait ceci en définissant tous les pixels sur le dessus la moitié d’une seule couleur et tous les pixels sur la partie inférieure à l’autre.
Vu de haut et en bas de l’écran, c’est deux couleurs différentes fait aussi apparaître comme il y a un plancher et un plafond. Après le pixel array est effacé alors il est temps de passer sur les principaux calculs. Le programme effectue une boucle sur chaque barre verticale sur l’écran et jette une lueur de comprendre quel mur devrait être sur l’écran à cette barre verticale. Le début de la boucle ressemble à ceci :
Tout ce qui se passe ici est quelques variables qui seront utilisées par le reste de la boucle sont calculés. CameraX est l’abscisse de l’actuelle bande verticale sur le plan de la caméra, et les variables de rayDir faire un vecteur pour le rayon. Toutes les variables se terminant par DistX ou DistY sont calculées de telle sorte que le programme vérifie uniquement pour les collisions aux endroits où les collisions pourraient éventuellement se produire. perpWallDist est que la distance entre le joueur et le premier mur le rayon entre en collision avec. Cela équivaudra à plus tard. Après que c’est fait il faut comprendre quelques-uns des autres variables basés sur celui que nous avons déjà calculé.
Une fois que c’est fait il est temps de comprendre où le rayon entre en collision avec un mur. Pour ce faire le programme passe par une boucle où il vérifie si le rayon est venu en contact avec un mur, et si pas, vers la prochaine collision possible point avant de vous enregistrer à nouveau.
Maintenant que nous savons où le rayon frappe un mur, nous pouvons commencer à comprendre comment le mur devrait se regarder dans la rayure verticale nous sont actuellement. Pour ce faire, nous en premier lieu calculer la distance au mur et ensuite utiliser cette distance pour figurer dehors comment grand le mur doit apparaître dans la bande verticale. Ensuite, nous traduisons cette hauteur un départ et terminer en ce qui concerne les pixels sur l’écran. Le code ressemble à ceci :
Après que qui est calculé, il est temps de commencer à savoir quels pixels de la texture du mur apparaîtra effectivement à l’utilisateur. Pour cela nous devons tout d’abord figure quelle texture est associée à la paroi nous vient de frapper et ensuite déterminer l’abscisse sur la texture des pixels qui s’affiche à l’utilisateur.
L’abscisse est calculée en prenant la position exacte du où le mur a été touché sur le plan 2D et en soustrayant la valeur entière, laissant seulement la décimale. Cette Decimales (wallX) est ensuite multiplié par la taille de la texture du mur pour obtenir la coordonnée x exacte sur le mur des pixels que nous voudrions attirer. Une fois, nous savons que la seule chose qui reste à faire est de calculer les coordonnées y des pixels sur la texture et les dessiner sur l’écran. Pour cela nous avons effectuer une boucle sur tous les pixels à l’écran dans la bande verticale nous font des calculs pour et calculer le la coordonnée exacte du pixel sur la texture. Aide ce programme puis écrit les données de pixel sur la texture dans le tableau de pixels sur l’écran. Le programme fait également parois horizontales plus foncée que les murs verticaux ici pour donner un effet de base d’éclairage.
Après cela, tout ce qui reste dans la classe de l’écran est de retourner le tableau de pixel
Et la classe se faite. Maintenant tout ce que nous devons faire est ajouter quelques lignes de code dans la classe de jeu pour obtenir l’écran de travail. Avec les variables dans la partie supérieure, ajoutez ceci :
Et dans le constructeur ajoute que ceci quelque part après les textures a été initialisé.
Et enfin, dans la méthode run ajouter
juste avant camera.update(map). Et le programme est terminé !