2013-11-25 8 views
5

लिखने के बाद एक्सएनए में एक गेम को विज़ुअलाइज़ करना यह एक साधारण सवाल है लेकिन मुझे कहीं और जवाब नहीं मिला।सी # कंसोल कोड

मैं प्रोग्रामिंग के लिए नया हूं और मैंने सी # में एक पूर्ण बोर्डगाम लिखा है। मैं एक्सएनए के साथ इसका प्रतिनिधित्व करने की सोच रहा था। मैं खेल को सरल कंसोल ऐप खोलने के लिए चाहता हूं (जो मेरे पास पहले से है) और एक गेम विज़ुअलाइज़ेशन।

मेरा विचार एक्सएनए विंडो में डेटा भेजने से पहले एक खिलाड़ी को अपनी बारी खेलने देना होगा और इसे डेटा को पढ़ना होगा और तदनुसार इसकी इमेजरी अपडेट करना होगा। एक्सएनए विंडो को डेटा प्राप्त करने और इसके ग्राफिक्स को अपडेट करने के अलावा कुछ भी करने की आवश्यकता नहीं है। मैं सिर्फ यह जानना चाहता हूं कि यह संभव है, अगर ऐसा करने का कोई आसान तरीका है और यदि मुझे XNA के बजाय विजुअल स्टूडियो विंडोज फॉर्म एप्लिकेशन का उपयोग करना चाहिए।

अग्रिम धन्यवाद।

+0

एक्सएनए गेम (यदि यह एक अलग वर्ग है) कंसोल एप्लिकेशन के 'सार्वजनिक' प्रतिनिधि चर तक पहुंचने में सक्षम होना चाहिए। इसे प्राप्त करने के बाद, ड्रॉ विधि सीधे स्थिति की स्थिति के आधार पर आपकी छवियों को आकर्षित कर सकती है।आखिर में 'अपडेट' विधि देख सकती है कि गेम शुरू हुआ, समाप्त हुआ और किसने जीता। साथ ही साथ अन्य चीजें भी। मोना। – Monacraft

उत्तर

0

यह आप क्या करना चाहते हैं के लिए काम कर सकते हैं:

प्रारंभ एक नया XNA परियोजना बनाने के द्वारा।

तो निम्न कार्य करें:

माइक्रोसॉफ्ट विजुअल C# समाधान Explorer में अपनी परियोजना को राइट-क्लिक करें। फिर "गुण" पर क्लिक करें और "एप्लिकेशन" टैब में अपने आउटपुट-प्रकार के रूप में "कंसोल एप्लिकेशन" का चयन करें।

मुझे लगता है कि आप एक्सएनए की मूल बातें जानते हैं।

अब, अद्यतन लूप में, आप कंसोल से उपयोगकर्ता इनपुट प्राप्त करने के लिए Console.ReadLine() का उपयोग कर सकते हैं, और फिर जो भी आपको चाहिए उसे अपडेट करें।

दुर्भाग्यवश, यह आपकी आवश्यकताओं के लिए पर्याप्त नहीं होगा, आपको कुछ समझौता करना होगा। आपको XNA प्रोजेक्ट में बनाए गए बोर्ड गेम क्लास को जोड़ना चाहिए, और उन्हें एक्सएनए में काम करने के लिए थोड़ा अनुकूलित करना चाहिए। आप उपयोगकर्ता से इनपुट प्राप्त करने में सक्षम होंगे, लेकिन आप सीधे कंसोल से XNA तक आउटपुट नहीं दे पाएंगे। Console.WriteLine() भी उपलब्ध है, इसलिए आप सामान्य रूप से पाठ आउटपुट करने में सक्षम होंगे।

एक बार जब आप इसे प्राप्त कर लेंगे, तो आपको यह देखना शुरू करना चाहिए कि आपके कोड को कंसोल से क्या आवश्यक है, इस आधार पर समस्याएं झूठ बोल रही हैं। एक बार जब आप जानते हैं कि वे क्या हो सकते हैं, तो उन मुद्दों के साथ फिर से पोस्ट करने के लिए स्वतंत्र महसूस करें, और मैं समाधान के साथ आने में मदद करूंगा।

ऐसा कहा जाता है, ऐसा लगता है कि ऐसा करने का एकमात्र वास्तविक लाभ कंसोल होगा। इनपुट प्राप्त करने के लिए रीडलाइन()। इसके अलावा, कोड नियमित XNA प्रोजेक्ट के समान ही होगा।

0

इसलिए मैंने एक कक्षा बनाई है जिसे आप अक्षरों में दर्ज कर सकते हैं ऊपरी और निचले मामले में रिक्त स्थान और बैकस्पेस ऐसा दिखाई देता है।

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Audio; 
using Microsoft.Xna.Framework.Content; 
using Microsoft.Xna.Framework.GamerServices; 
using Microsoft.Xna.Framework.Graphics; 
using Microsoft.Xna.Framework.Input; 
using Microsoft.Xna.Framework.Media; 

namespace TileGame 
{ 
    class KeyboardEntering 
    { 
     private KeyboardState ksCurr; 
     private KeyboardState ksPrev; 

     public KeyboardEntering() 
     { 

     } 

     public string Update(string enterString) 
     { 
      string exitString = enterString; 
      ksCurr = Keyboard.GetState(); 
      if (!IsPressed(Keys.LeftShift) && !IsPressed(Keys.RightShift)) 
      { 
       if (OnRelease(Keys.A)) exitString += "a"; 
       if (OnRelease(Keys.B)) exitString += "b"; 
       if (OnRelease(Keys.C)) exitString += "c"; 
       if (OnRelease(Keys.D)) exitString += "d"; 
       if (OnRelease(Keys.E)) exitString += "e"; 
       if (OnRelease(Keys.F)) exitString += "f"; 
       if (OnRelease(Keys.G)) exitString += "g"; 
       if (OnRelease(Keys.H)) exitString += "h"; 
       if (OnRelease(Keys.I)) exitString += "i"; 
       if (OnRelease(Keys.J)) exitString += "j"; 
       if (OnRelease(Keys.K)) exitString += "k"; 
       if (OnRelease(Keys.L)) exitString += "l"; 
       if (OnRelease(Keys.M)) exitString += "m"; 
       if (OnRelease(Keys.N)) exitString += "n"; 
       if (OnRelease(Keys.O)) exitString += "o"; 
       if (OnRelease(Keys.P)) exitString += "p"; 
       if (OnRelease(Keys.Q)) exitString += "q"; 
       if (OnRelease(Keys.R)) exitString += "r"; 
       if (OnRelease(Keys.S)) exitString += "s"; 
       if (OnRelease(Keys.T)) exitString += "t"; 
       if (OnRelease(Keys.U)) exitString += "u"; 
       if (OnRelease(Keys.V)) exitString += "v"; 
       if (OnRelease(Keys.W)) exitString += "w"; 
       if (OnRelease(Keys.X)) exitString += "x"; 
       if (OnRelease(Keys.Y)) exitString += "y"; 
       if (OnRelease(Keys.Z)) exitString += "z"; 
      } 

      if (IsPressed(Keys.LeftShift) || IsPressed(Keys.RightShift)) 
      { 
       if (OnRelease(Keys.A)) exitString += "A"; 
       if (OnRelease(Keys.B)) exitString += "B"; 
       if (OnRelease(Keys.C)) exitString += "C"; 
       if (OnRelease(Keys.D)) exitString += "D"; 
       if (OnRelease(Keys.E)) exitString += "E"; 
       if (OnRelease(Keys.F)) exitString += "F"; 
       if (OnRelease(Keys.G)) exitString += "G"; 
       if (OnRelease(Keys.H)) exitString += "H"; 
       if (OnRelease(Keys.I)) exitString += "I"; 
       if (OnRelease(Keys.J)) exitString += "J"; 
       if (OnRelease(Keys.K)) exitString += "K"; 
       if (OnRelease(Keys.L)) exitString += "L"; 
       if (OnRelease(Keys.M)) exitString += "M"; 
       if (OnRelease(Keys.N)) exitString += "N"; 
       if (OnRelease(Keys.O)) exitString += "O"; 
       if (OnRelease(Keys.P)) exitString += "P"; 
       if (OnRelease(Keys.Q)) exitString += "Q"; 
       if (OnRelease(Keys.R)) exitString += "R"; 
       if (OnRelease(Keys.S)) exitString += "S"; 
       if (OnRelease(Keys.T)) exitString += "T"; 
       if (OnRelease(Keys.U)) exitString += "U"; 
       if (OnRelease(Keys.V)) exitString += "V"; 
       if (OnRelease(Keys.W)) exitString += "W"; 
       if (OnRelease(Keys.X)) exitString += "X"; 
       if (OnRelease(Keys.Y)) exitString += "Y"; 
       if (OnRelease(Keys.Z)) exitString += "Z"; 
      } 
      if (OnRelease(Keys.Space)) exitString += " "; 

      if (OnRelease(Keys.Back)) 
      { 
       if(exitString.Length != 0) exitString = exitString.Substring(0, exitString.Length - 1); 
      } 

      ksPrev = ksCurr; 
      return exitString; 
     } 

     public bool OnRelease(Keys key) 
     { 
      if (ksCurr == null) return false; 
      if (ksPrev == null) return false; 
      return ksCurr.IsKeyUp(key) && ksPrev.IsKeyDown(key); 
     } 
     public bool IsPressed(Keys key) 
     { 
      if (ksCurr == null) return false; 
      return ksCurr.IsKeyDown(key); 
     } 
    } 
} 

फिर इस का उपयोग करने के मैं एक KeyboardEntering वस्तु बनाने के लिए और यह सेट ke करने के लिए और अद्यतन इस

drawStringTest = ke.Update (drawStringTest) की तरह दिखता है;

तो मैं ड्रॉस्ट्रिंग विधि के साथ स्ट्रिंग खींचता हूं। मुझे उम्मीद है कि लोग यह सहायक पा सकते हैं। मुझे पता है कि यह एक पुरानी पोस्ट है और एक्सएनए ऐसा नहीं है जो यह होता था लेकिन जो भी हाहा था।

संबंधित मुद्दे