Je préfère maintenant rester au lit. obtenir en raison de la fête d'anniversaire de mon frère le sommeil déjà très peu, je voulais commencer la journée en fait plutôt calme. Mais le destin avait autre chose en face de moi.
Les problèmes déjà deux fois-dessus avec mon ordinateur a pris avant le premier café de la journée dans un état permanent. Depuis vain Auseiander et encore plus le montage. Il ne veut pas plus. Parfois, il apportait encore l'approche tourmentée un état bip, qui était alors déjà.
Heureusement je peux toujours envoyer un iPod à mes e-mails et le (ou écrire aux soins de »la« blog?) Blog, j'espère vraiment que de l'Eee PC ici eintrudelt mardi! Pour tant que je n'aurai l'argent pour un nouveau conseil d'administration, avec correspondance Cpu ainsi que je vais probablement prendre 1-2 mois.
Ce que j'ai aujourd'hui la journée à chercher la tête secouer * morts *
Cadre pour les menus et les dialogues ont été élaborés sans aucun problème, ok ... avons-nous rapidement complété le menu principal, puis après le travail. Nix ajustement parce que ... D'une certaine manière, soit les éléments de menu pas dans la fenêtre ou la fenêtre était trop grande. Mais que pouvez-vous aller mal quand une partie de la trame exactement 8 × 10 pixels est grand et une lettre de la police est la même taille? mathématiques simples, ne correspond pas encore tout!
Je n'avais en fait que quelques lettres des ressources de la police de peinture manquez un cadre pour voir l'erreur. Jusque-là, j'ai eu ma source sans doute déjà lu mille fois sans correction résultat. La fonction standard pour les polices bitmap inserts Löve (qui bien sûr, je ne sais pas) est une nouvelle d'un pixel entre deux lettres. Mais heureusement il y avait aussi une fonction, Merci à laquelle je ne pouvais laisser cette pixels stupide;)
Eh bien, j'ai maintenant assez de programmation. Le menu peut attendre Maintenant qu'elle est enfin aujourd'hui, qui a 18 ans et est déjà forte sans moi à la fête.
Préface: J'ai remarqué que je GORC mon fil dans le jeu Robot Forum maintenant abusé DevBlog. Les temps je vais agir contre elle, et maintenant mes progrès et de pensées dans ce blog ... où ils appartiennent en fait trop;)
Alors ... j'ai utilisé la semaine dernière et farcie de tous les éléments du jeu dans les classes. Le contenu d'une scène n'est plus dans un tableau 2D, mais sur des tables Lua deux. L'un des robots, alors peut-être tous les PNJ d'autres viennent ici. Et dans une autre table, mettre tous les autres éléments (murs, or, etc).
Le but de la procédure est de rendre le jeu de logique gérable. Au lieu de «longue blocs if-then-else maintenant mettre toute la logique d'un objet particulier dans son instance de classe. Joue un exemple:
"Gold" , Object ) Gold = class ("Gold", Object)"images/gold-0.png") Image love.graphics.newImage Gold = ("images/gold-0.png") , 0) Or l'image: SetCenter (0, 0)"sounds/gold.wav") Gold Sound love.audio.newSound = ("sons/ gold.wav") x, y, params ) Or la fonction init:(x, y, params)
self.super: init (x, y,) self.ani = Gold Imagefin obj ) Or la fonction: canEnter (obj)- Peut être saisi par le seul joueur obj )then return false ends'il n'est pas joueur: faites (obj)puis retour fin faussesreturn truefin obj ) Or la fonction: onEntered (obj), obj )then return endsi le joueur n'est pas: faites (obj)puis retour fin
Auto: remove()
spieler.gold spieler.gold + 1=
love.audio.play (Gold Sound)fin
Ok. Un objet de collection est maintenant aucun script réel défi technique. Mais comment quelque chose de plus compliqué?
"Isolator" , Moving ) IsolatorImage = love.graphics.newAnimation ( love.graphics.newImage ("images/isolator-0.png") , 16 , 12 , 0.1 , 0) IsolatorImage:setCenter (8 , 6)function Isolator:init ( x, y, params ) self.super:init ( x, y ) self.ani = IsolatorImage self.speed = spieler.speed end function Isolator:canEnter ( obj )local dx, dy -- kann nur vom Spieler betreten werdenif not Player:made ( obj )then return false end-- bewegt sich der Isolator bereits, -- können wir ihn nicht betreten, bzw. in seine Richtung gehen -- da wir sonst durch ihn hindurch laufenif self:isMoving ( )then return false end dx = self.x - obj.x dy = self.y - obj.y return self:canMoveTo ( dx, dy )end function Isolator:canMoveTo ( dx, dy )local feld = Szenen:current ( ) :get ( self.x + dx, self.y + dy )if #feld ==0then self:setTarget ( dx *16 , dy *12)return true end for i, e in pairs( feld )do if not Isolator:made ( e.obj )and not Barbwire:made ( e.obj )then return false else if e.obj:canMoveTo ( dx, dy )then self:setTarget ( dx *16 , dy *12)return true end end end return false end Isolant = classe («isolateur», déménagement) = isolant love.graphics.newAnimation Image (love.graphics.newImage ("images/isolator-0.png"), 16,0,1, 0) isolant Image 12,: SetCenter (8, 6)la fonction d'isolateurs: init (x, y, params) self.super: init (x, y) self.ani Image isolant = = self.speed spieler.speed End Function Isolant: canEnter (obj) dx locales, dy - ne peutnesontpasaccessibles par les joueurssi le joueur: Made (obj)puis retour fin fausse- de l'isolant se déplace déjà - nous ne pouvons pas y entrer, ou de sa direction pour aller en - sinon nous courons à travers lui l'auto si: isMoving (),puis retour dx =False End self.X - dy = obj.x self.y - auto retour obj.y: canMoveTo (dx, dy) End Functionisolant: canMoveTo (dx, dy) = champ local scènes: en cours (): get (self.X + dx, dy self.y +)si le champ ==0then # * auto: setTarget (dx16, dy * 12)de retour fin de faux i, s par paires(champ)faire si pas Isolant: Made (e.obj)et non barbelé: (e.obj)alors return false else if e.obj: canMoveTo (dx, dy),puis l'auto: setTarget fait (dx * dy *16 12)retour vraie fin fausse déclaration end end end
Un autre avantage est la capacité côté maintenant avoir plusieurs articles sur le même terrain. Quand on entre dans une scène pour la première fois, est généralement un seul objet dans un champ. Mais qui a joué le jeu de robot sait déjà que quelques-uns des temps est venu d'être propre à l'inventaire. Tada! Quoi de mieux que tout ce qui n'est pas nécessaire pour le moment, il suffit de jeter sur un tas? Et quand il est à nouveau nécessaire, il suffit de lancer sur le terrain et recueillir tout ce que vous automatiquement.
Malheureusement, je ne peux pas vraiment content de mon petit "succès" parce que ça coûte des cadres (l'intro avec un peu moins de 1000 de 60 FPS sur les murs est juste tombé en dessous de la 50e scènes de garder toujours à la frontière ( 300-400 objets), mais une fois que vous les pousser les isolateurs, pouvez-vous aussi disparaître ici jusqu'à 10 images.
Suis toujours l'un ou autre idée comment je peux limiter la perte. Mais à la longue, je serais mieux à la recherche d'une solution performante quelque chose. Ce qui complique, mais en aucun cas les scripts rapide central des objets ...
Je voudrais maintenant, mais vous inquiétez pas, et je pense déjà à la GUI widment GORC. Enfin, le jeu serait les menus, boîtes de message, et surtout l'inventaire. Nous allons voir, la nuit ne fait que commencer xD
Cette fois, ce n'était pas le câble réseau, mais l'alimentation de l'alimentation de la carte mère, j'ai dû donner un coup de main. Bien sûr, je viens avec cette idée qu'après j'avais tiré tout le processus depuis la dernière fois ... en vain cette fois.
La question demeure: Pourquoi?
Est-ce parce que je fois que l'ordinateur est éteint, la bande hors tension? Si je ne reçois pas les jus de mes périphériques USB aurait arrêter le PC et de la lumière jusqu'à la veille de son bonheur. Et une mauvaise connexion, je ne peux pas imaginer une réalité, parce que la porte n'est pas fermée, même mon chat est à proximité de l'ordinateur.
Dû se dérouter un peu et je dois trouver un freeware pour enregistrer des vidéos d'écran faite. Il ne faut pas perdre, après tout, je veux juste enregistrer, et ce, peut-être télécharger sur Youtube. Wanted ... Résultats:)
Décompressé, le format vidéo MPEG4 et réglé à pression pour l'inclusion. Et déjà j'ai eu ma première vidéo de GORC:
Vraiment beau programme:) Cependant, en quelque sorte ce que je n'ai pas les bons réglages pour enregistrer le son et la musique du programme filmé et sélectionnez l'option pour le film directement à la fin fenêtre. Avec CamStudio il semble que je ne peux sélectionner la zone. Et je suppose donc qu'il ya trop ou trop peu de la fenêtre.
J'ai eu quelques jours de départ des mouvements de fluide dans GORC installé et essayé le code un peu plus facile à faire. Parce que, comme Charlie et les robots sont assez similaires en bonneterie, rien ne pouvait être plus de deux objets également attirer les mêmes fonctions (déplacement, l'utilisation de ...) Soit. C'est ce qui ressort dans à peu près le suivant:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
movable_create fonction()= (M)
x =0
ma =0 m retourfin m, x, y )fonction movable_setPosition (m, x, y) x = x ma = yFin- Exemple:
joueur = movable_create () , 2) movable_setPosition (joueur, 2, 2)
Tout a bien fonctionné. Mais tout à l'heure que je pensais. Ne serait-il intéressant de construire l'objet entier? Mais comment fait-on dans le Lua? Après beaucoup de googler et violon, je suis venu à la conclusion suivante:
"class.lua")-- Standard Objekt Object = Class (nil)function Object:init ( )-- Gridposition self.x =0 self.y =0-- Sprite / Animation self.ani =0end function Object:setPosition ( x, y ) self.x = x self.y = y end-- Bewegliche Objekte Moveable = Class ( Object )function Moveable:init ( ) self.super ( ) :init ( )-- Ziel Gridposition self.nx =0 self.ny =0-- Bewegungsrichtung (entfernen!) self.dir =0 self.ani_x =0 self.ani_y =0-- Felder pro Sekunde self.speed =4 self.last_update =0end function Moveable:draw ( )local x, y x = ( self.x - 1) *16 + self.ani_x y = self.y *12 + self.ani_y love.graphics.draw ( self.ani, x, y )end ... -- Beispiel: mauer = Objekt ( ) mauer:setPosition (10 , 15) spieler = Movable ( ) spieler:setPosition (2 , 2) love.filesystem. require("class.lua")- Standard objet de la classe Object = (nil)fonction de l'objet: init ()- Gridposition self.X self.y =0 0=- Sprite / self.ani Animation=0 End Function objet: setPosition (x, y) x = y self.X self.y fin=- mobiliers objets mobiliers = classe (objet)fonction de meubles: init () self.super (): init ()- Objectif Gridposition self.ny self.nx =0=0- retirer la direction du mouvement (!)0= self.dir self.ani_x =0=0 self.ani_y - trames par seconde= self.last_update self.speed 4=fin fonction0 meubles: draw ()locale x, y x = (self.X - 1) 16= y + self.ani_x self.y *12 + * self.ani_y love.graphics.draw (self.ani, x, y)fin ... - par exemple: mur = Object () mur: setPosition (10, 15) joueurs mobile = () joueurs: setPosition (deux, 2)
Demandez-moi maintenant, mais pas exactement comment tout cela fonctionne;) Pour moi, un DAS de le faire. Qui est toujours intéressé par le fonctionnement peut être si intelligent de lire les pages suivantes:
Au début de Décembre avait Hercules du jeu Robot Forum environ 8 minutes sur vidéo de gameplay épisode de Youtube Junior une reingestellt Robot. Peut-être qu'il se réveille, même lorsque l'un ou l'autre intérêt Robot Games essayer?
En tant que quasi vieux jeu de robot , je dois admettre que je lièvre Le truc avec le blocage des adversaires à l'aide Säurefläschen ne savais pas * rires * C'est donc le même nombre de points délicats. Merci Herc:)
Je suis en fait plus, comme l'agréable, mais Teeworlds il me donna les deux dernières heures vraiment impressionné:)
Loud Guy couleur sphériques uns contre les autres dans des cartes colorées. Les touches WASD dirige-on être Kugelviech et vise avec la souris. Un clic gauche permet le tir, molette de défilement changer cette situation. Utilisation Leerstaste est sauté, au bon moment est aussi un saut un peu plus élevé. Et la cerise est le crochet, en droit, avec laquelle on peut augmenter après un peu de formation à de nouveaux sommets.
Au lieu de se mettre au lit, je vais une fois les points plus diligente * onde *
Chaque matin, j'ai donné mon Power PC et marcha vers la cuisine et du café frais. Seulement, cette fois a donné toute la couleur de mon visage encore tout endormi quand je reviens à l'ordinateur. Il fredonna plein d'énergie, mais ne montrait aucun tableau. Pour le mode de faible puissance de l'écran, je n'ai pas été assez longtemps dans la cuisine. Il n'est pas cassé? Malheur!
Dans le passé une heure et demie, j'ai exploité ma pièce par pièce PC pauvres, pour obtenir les erreurs sur la piste. Plusieurs fois, le CMOS vidé tout. Rien: (fans ont sauté sur, mais il n'y avait même pas le "pas de mémoire" Beep. Inside j'ai déjà compris quand j'ai eu assez d'argent pour une nouvelle carte mère, CPU nouvelle, ou même les deux.
Le seul que je n'avais pas encore été déduits, le câble réseau. Et devinez ce qui s'est passé comme je l'ai, c'est que dans le dernier acte de mon désespoir de suite? Bieeeeep Bieeeeep parce qui voulait :):):) mémoire afin que morceau par morceau tout remettre en démarrage de l'ordinateur .... raccordement au réseau câblé couru un nouveau procès, démarrage de l'ordinateur quand même:)
S'il vous plaît chers PC, NE JAMAIS faire quelque chose comme moi!
Imaginez-vous en face d'elle juste un petit jeu pour l'iPhone et que rédigé en allemand. Mais parce que vous voulez faire appel au plus large public possible, il devrait y avoir une version anglaise. Mais comment allez-vous faire à ce problème? Une fois, j'ai googlé un peu.
Xcode dans votre répertoire de projet que vous soumettez à deux répertoires: "de.lproj" et "en.lproj"
Maintenant, il s'adapte à votre projet en utilisant Ajouter -> Nouveau dossier ... -> Autres -> Fichier des chaînes Deux nouveaux fichiers ajoutés Localizable.strings ". Un dans la de.lproj »et l'autre dans le" en.lproj "répertoire.
Votre projet vue devrait ressembler à ceci:
J'ai parfois considérée comme un exemple de menu principal, le code ressemble plus à ce qui suit:
1 2 3 4 5 6 7
MenuItem * start =@ "Starte Spiel"[MenuItemFont itemFromString:@ début du match "@selector( startGame : ) ] ;: Auto: sélecteur@ sélecteur decible (début du jeu:)];* Aide MenuItem =@ "Hilfe"[MenuItemFont itemFromString:@ "Aide"@selector( help : ) ] ;: Auto: sélecteur@ sélecteur decible (aide:)];
Les chaînes de "début de la partie» et «aider à remplacer« Nous, les NSLocalizedString () la fonction. StartGameKey et HelpKey maintenant céder la place à la corde que nous avons dit vouloir le cours de traduction;)
Et déjà que nous ayons jamais livrés à l'iPhone les meilleures traductions de langue:) est une langue devrait être fixé, pour laquelle nous vous proposerons pas de traduction semble être la traduction en anglais ce qui est pris, dans la plupart des cas, complètement autorisé.