<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9</title>
    <atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Niners/c4f.Walt-Morrison/Posts/RSS"></atom:link>
    <itunes:summary></itunes:summary>
    <itunes:author>Microsoft</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <image>
      <url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
      <title>Channel 9</title>
      <link>http://channel9.msdn.com/Niners/c4f.Walt-Morrison/Posts</link>
    </image>
    <itunes:image href=""></itunes:image>
    <itunes:category text="Technology"></itunes:category>
    <description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
    <link>http://channel9.msdn.com/Niners/c4f.Walt-Morrison/Posts</link>
    <language>en</language>
    <pubDate>Wed, 22 May 2013 18:04:14 GMT</pubDate>
    <lastBuildDate>Wed, 22 May 2013 18:04:14 GMT</lastBuildDate>
    <generator>Rev9</generator>
    <c9:totalResults>1</c9:totalResults>
    <c9:pageCount>1</c9:pageCount>
    <c9:pageSize>25</c9:pageSize>
  <item>
      <title>Kid’s Programming Language: Christmas Tree Shooter</title>
      <description><![CDATA[<span id="c4fmetadata">
<table class="" cellspacing="0" cellpadding="1" width="100%" border="0">
<tbody>
<tr class="entry_overview">
<td class="" width="50">&nbsp;</td>
<td class=""><span class="entry_description">This article lights on a language called Kids Programming Language (KPL). This is a very easy language and especially made for people which are not the memeber of programers team. It mainly deals with games.</span></td>
</tr>
<tr>
<td class="" colspan="2">
<div class="entry_author">Walt Morrison and Jon Schwartz</div>
<div class="entry_company"><a></a></div>
<br>
<div class="entry_details"><b>Difficulty: </b><span class="entry_details_input">Intermediate</span></div>
<div class="entry_details"><b>Time Required:</b> <span class="entry_details_input">
1-3 hours</span></div>
<div class="entry_details"><b>Cost: </b><span class="entry_details_input">Free</span></div>
<div class="entry_details"><b>Software: </b><span class="entry_details_input">Phrogram</span></div>
<div class="entry_details"><b>Hardware: </b><span class="entry_details_input"></span></div>
<div class="entry_details"><b>Download: </b><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/1127053/ChristmasTreeShooter_KPL.msi">Download</a>
</div>
</td>
</tr>
</tbody>
</table>
</span>
<p>Ho Ho Ho! Merry Christmas! Happy Holidays! Ho Ho Ho! Naughty or nice? We don't really want to know! Ho Ho Ho!</p>
<p>Have you seen the previous articles here at Coding4Fun about KPL, the <a href="http://www.kidsprogramminglanguage.com/">
Kid's Programming Language</a>? The <a href="http://msdn.microsoft.com/coding4fun/coolapplications/KPL/default.aspx">
overview</a> and the article on <a href="http://msdn.microsoft.com/coding4fun/gamedevelopment/KPL1/default.aspx">
KPL Pong</a>. KPL is not just for kids; it's for anyone who wants to code fun stuff fast. Proving the point, we're working on a couple of Holiday-themed KPL games and articles—like this one, ChristmasTreeShooter.kpl! We have a fun and easy suggestion for how
 you and family or friends can modify the game yourself, too. </p>
<p><img alt="" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/1127053/KPL-Xmas1_1.gif" border="0"></p>
<p>For some unknown reason, your Christmas tree is bobbing and weaving unpredictably before your eyes. It just won't hold still! And you have the rest of these ornaments that you
<i>have</i> to hang on the tree, or you can <i>forget</i> about opening that green box. You suspect it's got an
<a href="http://www.xbox.com/">Xbox 360</a> in it, and going with that theory, you're
<i>not</i> shaking it like the others. Just in case. Anyway, you do your best with the ornaments, and Santa rates your performance at the end. Not a guy you want to disappoint, coming down to that Christmas Eve wire...</p>
<p>This KPL game was implemented in 161 KPL instructions, and will be simple code for an experienced or hobbyist programmer to follow. It uses sprites for graphics and uses custom sound clips, which we're going to show you how to replace with your own voice-overs.
 What are friends or family going to say when it's <b>you</b> who rates their performance? Are you going to be deadpan and droll? Acerbic and insulting? Will you do a Santa voice, a Mrs. Claus voice or an Elf voice? However you record it, you know it'll be
 fun!</p>
<p>Chances are, if you're here at Coding4Fun, you're more than just a beginning programmer—but I bet you can think of some friends or family who might like to be a beginning programmer? Well, we made KPL for them—and you helping them learn with KPL should make
 it fun and easy for both of you. This game ought to catch their interest, but if they're a novice perhaps you can help them through the
<a href="http://www.ms-inc.net/Download.aspx?File=BeginningProgrammingWithKPL">Beginning Programming with KPL Tutorial</a> before you work with them on this or other KPL game code.</p>
<h2>Just the interesting stuff, please</h2>
<p>This article will assume some basic programming skill, and rather than explaining every line of code in the KPL program, will focus on key techniques or algorithms which will be useful as you develop your own KPL games:
</p>
<ul>
<li>Finding free images online<br>
<br>
</li><li>Using Sprites in KPL<br>
<br>
</li><li>Recording and using custom sounds<br>
<br>
</li><li>Using Arrays<br>
<br>
</li><li>Handling keyboard input<br>
<br>
</li><li>Sprite interaction<br>
<br>
</li><li>Allowing user customization of game behavior</li></ul>
<p>Before we begin, the article will make the most sense if you have installed KPL, and downloaded and unzipped the Christmas Tree Shooter program underneath your KPL install folder. The ideal way to start, of course, is to load ChristmasTreeShooter.kpl in
 the KPL IDE, click &quot;Run the program,&quot; and play it a few times before examining the code. <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p>
<p>KPL and this program are both available as freeware downloads from: <a href="http://www.kidsprogramminglanguage.com/download.htm">
http://www.kidsprogramminglanguage.com/download.htm</a>. KPL does have a dependency on the .NET Framework 1.1, and the KPL install will &quot;auto-magically&quot; download and install the Framework if it is not already installed on your machine.
</p>
<h2>Finding Free Images Online</h2>
<p>There are many many places online that offer free images that you can reuse in your own KPL programs. An
<a href="http://search.msn.com/results.aspx?q=christmas&#43;tree&#43;clipart&amp;FORM=QBHP">MSN Search for &quot;Christmas Tree Clipart&quot;</a> returned 589,677 search results when I ran it. Here's the page where we found our Xmas tree:</p>
<p><a href="http://www.geocities.com/~bug_hut/Christmas/trees.html">http://www.geocities.com/~bug_hut/Christmas/trees.html</a><u>
</u></p>
<p>That particular page is of interest because it's been viewed over 200,000 times—who'd have thought?!? And because it is the only web page I can think of using a background WAV file that I actually
<i>liked</i> hearing!</p>
<p>KPL supports images in all standard file formats, including GIF, JPG, PNG, TIF and BMP. KPL does support animated GIFs, but those are not used in our Christmas Tree Shooter. If you're using Internet Explorer, saving an image you find on the Web for reuse
 is easy: right-click the image, and select &quot;Save Picture As...&quot;. KPL will automatically find an image by file name if the image is in the Media\Images folder under the KPL installation folder; if you expect to use an image from more than one KPL program, this
 is the right place to put it. If an image is specific to the program you are working on, you can leave the image in the same folder as the .kpl program itself. KPL will find it in the local folder, looking there first before checking the Images folder.</p>
<p>Of course, the caveat about finding images online is making sure the site allows you to reuse the image. Image reuse happens all the time on the Web, but of course, if you find an image with a copyright or other usage limitation stated on the page, you will
 want to comply. There are many many freely usable images out there, so it's safest and simplest to keep looking until you find one with no strings attached.</p>
<h2>Using Sprites in KPL</h2>
<p>Here's a single method we coded that wraps the basic KPL sprite commands into one:</p>
<pre><code>Method LoadSizePlaceSprite(name As String, file As String, <br>                           scale As Decimal, x As Int, y As Int)<br>    LoadSprite( name, file ) <br>    ScaleSprite( name, scale )<br>    MoveSpriteToPoint( name, x, y )<br>    ShowSprite( name )    <br><br>End Method</code></pre>
<p>This allows a single call to load, place and display a sprite:</p>
<pre><code>LoadSizePlaceSprite(&quot;TREE&quot;, &quot;Christmas Tree3.png&quot;, 1.50, <br>                     TreeX, TreeY )</code></pre>
<p>The <b>name</b> parameter gives the sprite a name which you will use to refer to it when you manipulate the sprite.</p>
<p>The <b>file</b> parameter is the filename to the image file which will be used to represent the sprite on-screen. No path is required to the filename, but the file must be in the local folder with the .kpl program, or in KPL's Media\Images folder.</p>
<p>The <b>scale</b> parameter is a size multiplier for displaying the sprite. 1.0 is no size change, 0.5 is half size, etcâ€¦</p>
<p>The <b>x</b> and <b>y</b> parameters specify the screen location where the sprite will be displayed, in pixels, with the default being that the upper left corner of the window is location (0, 0).</p>
<p>KPL defaults all sprites to the same ZIndex of 0—all sprites are drawn or rendered on the same layer, so the last one drawn always appears &quot;on top.&quot;
<code>SetSpriteZIndex(name, ZIndex)</code> can be used to specify the ZIndex to control this. Sprites with a higher ZIndex will always be drawn on top of sprites with a lower ZIndex.</p>
<pre><code>SetSpriteZIndex(&quot;Ball&quot; &#43; BallCount, 10)</code></pre>
<p>Other Sprite-manipulating methods used in ChristmasTreeShooter.kpl are:</p>
<p><b>HideSprite()</b> takes the name of the sprite which is to be hidden when it is no longer needed:</p>
<pre><code>HideSprite(&quot;CrossH&quot;)</code></pre>
<p><b>GetSpriteHeight() </b>and<b> GetSpriteWidth()</b> return a height or width in pixels of the sprite:</p>
<pre><code>GetSpriteHeight( &quot;CrossH&quot; )</code></pre>
<p><b>SpritesIntersect()</b> takes the name of two sprites, and returns true only if they intersect or overlap on the screen:</p>
<pre><code>If SpritesIntersect(&quot;TREE&quot;, &quot;Ball&quot; &#43; OrnamentCount) Then</code></pre>
<p>That's all the Sprite code used in ChristmasTreeShooter.kpl. We have designed KPL to be as simple and as highly leveraged as possible, and this is particularly visible in KPL support for Sprites.</p>
<h2>Recording and using custom sounds</h2>
<p>This KPL program uses custom sounds for Santa's rating of your performance at the end of the game. As with images, sound files can be placed in the same folder as the program if they are used only for the program. If you'd like to share the sounds across
 more than one program, they can be placed into the Media\Sounds folder underneath KPL's install folder.</p>
<p>The sounds used for the game were recorded using the Sound Recorder, which is available as part of all versions of Windows. You can launch it from Start Menu &gt; All Programs &gt; Accessories &gt; Entertainment &gt; Sound Recorder, or by running sndrec32.exe from the
 Start &gt; Run... dialog. If you've been a geek long enough, that file name will remind you of the good (?!?) old days. Not only of 32-bit Windows, but of 8-character MSDOS file names. Amazing thing is, that really wasn't very long ago. <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p>
<p>The File menu and the tape-deck style button bar are all of the Sound Recorder that you'll need to use. KPL currently supports .WAV file formats. We're adding support for more sound formats—as well as the ability to play multiple, layered sounds—to KPL v
 2, which is targeted for a January 2006 release. Any other program which allows recording or editing supported sound files can be used instead of the Sound Recorder, or course.</p>
<p>So, here's a fun, easy customization: use Sound Recorder to record and save your own version of the following sound files in place of ours! Here are our sounds and their scripts:</p>
<p><b>HoHoILikeIt.wav</b>: &quot;Ho Ho Ho! I like it!&quot;</p>
<p><b>HoHoTryAgain.wav</b>: &quot;Ho Ho Ho! Try again!&quot;</p>
<p>You can, of course, say anything you like, and/or give your recordings a different name. If you do use a different name, you'll need to change the following lines of KPL code to match:</p>
<pre><code>If HitCount = 5 Then<br>    PlaySound( &quot;HoHoILikeIt.wav&quot; )<br>Else<br>    PlaySound( &quot;HoHoTryAgain.wav&quot; )</code></pre>
<p><code>End If</code></p>
<h2>Using Arrays in KPL</h2>
<p>KPL does support the use of arrays, as well as user-defined structures. KPL v 2 will add support for user-defined classes—an ideal way to encapsulate logic such as the handling of our Christmas tree ornaments. Until then, we kept this simple by using arrays
 to handle the five of them:</p>
<pre><code>Define BallX As Int[5]<br>Define BallY As Int[5]</code></pre>
<p><code>Define BallOffset As Int[5]</code></p>
<p>And here is an example from the program showing the use of these arrays:</p>
<pre><code>    BallOffset[OrnamentCount] = BallX[OrnamentCount] - TreeX </code></pre>
<h2>Handling keyboard input</h2>
<p>A simple model for coding a game in KPL is a large loop which, at a controlled interval, processes user input and game events. Here is our Method
<b>Main(),</b> which shows how this loop is the basis of the processing for the program:</p>
<pre><code>Method Main()<br>    SetupGame()<br>        <br>    // Show Instructions    <br>    Alert(&quot;Use the Arrow keys to move the shooter and tap the <br>           Space Bar to place an ornament. Placing an ornament <br>           on another will break both!&quot;, &quot;How to play!&quot;) <br><br>    Define CurrentTime As Decimal <br>    Define TimeLastChecked As Decimal<br>    <br>    // Start the wait time for the Space Bar to prevent the Key <br>    // Bounce effect     <br>    LastOrnamentFireTime = TickCount()<br><br>    While GameOver = False<br>    <br>        CurrentTime = TickCount()    <br>        <br>        // If 60 milliseconds have not passes since the last <br>        // time we checked, we don't do anything yet.<br>        If CurrentTime - TimeLastChecked &gt; 60 Then <br>            // Every 60 milliseconds (that's 17 times a <br>            // second!) we fall into this block.<br>            // First we process Key events to move the<br>            // targeting circle        <br>            ProcessKeyEvents()<br>            // Then we MoveTheTree.<br>            MoveTheTree()<br>            // We reset the timer each time, so we wait <br>            // another 60 milliseconds before moving again.<br>            TimeLastChecked = CurrentTime<br>        End If<br>        <br>    End While<br>    <br>    GameOverShowTree()<br>  <br>End Method</code></pre>
<p>The actual processing of key events is done in the <b>ProcessKeyEvents()</b> method, using the
<b>IsKeyDown()</b> function:</p>
<pre><code>    If IsKeyDown( &quot;Up&quot; ) Then<br>        If CrossHY &gt; 10 Then<br>            CrossHY = CrossHY - CrossHairSpeed<br>        End If<br><br>End If</code></pre>
<p>The key processing code checks for all keys that are relevant to targeting movement, and will handle any and all keys that are down. It also uses logic as shown above so that keys which would cause the targeting circle to move off the viewable screen are
 ignored.</p>
<p>One issue caused by processing keys in a loop this way results from the fact that the computer loop can be so much faster than our own fingers on the keyboard, which can result in processing the KeyDown more than once on a single tap of the Space Bar. When
 the single Space Bar keystroke is as important to the game as it is here, we must add a little extra code which makes sure we don't process that Space Bar keystroke more than once. The following code, at the bottom of the
<b>ProcessKeyEvents()</b> method, does this using the global variable <code>LastOrnamentFireTime</code>:</p>
<pre><code>// Process the wait time for the Space Key to reduce the Key <br>// Bounce Effect.  If it's been less than 200 milliseconds...<br>currentTime = TickCount()<br>If (currentTime - LastOrnamentFireTime) &lt; PlayerOrnamentFireDelay Then<br>    Return // Exit the method without processing<br>End If<br>If IsKeyDown( &quot;Space&quot; ) Then<br>    LastOrnamentFireTime = currentTime<br>    ShootOrnament()<br><br>End If</code></pre>
<h2>Sprite interaction</h2>
<p>What you are attempting to do with this game, of course, if place each of the five ornaments onto the bobbing and weaving Christmas tree, without breaking them. Since the tree and the ornaments are all implemented as sprites in this KPL program, this is
 as easy as checking to see whether the sprites &quot;intersect&quot; when you hit the spacebar to place an ornament. The code for this is in method<b> ShootOrnament()</b>:</p>
<pre><code>If SpritesIntersect(&quot;TREE&quot;, &quot;Ball&quot; &#43; OrnamentCount) Then<br>    PlaySound( HitSound )    <br>    // if we hit the tree count it and show it<br>    HitCount = HitCount &#43; 1<br>    // calculate the ornament offset<br>    BallOffset[OrnamentCount] = BallX[OrnamentCount] - TreeX <br>Else<br>    // if we miss the tree all together don't count or show ornament<br>    PlaySound( BreakSound )    <br>    HideSprite(&quot;Ball&quot; &#43; OrnamentCount)    <br><br>End If</code></pre>
<p>Note that if we actually got the ornament on the tree, we figure out its Offset so we can later move it along with the tree. And if we miss the tree altogether, the bulb breaks and is not shown.</p>
<p>These ornaments are those fragile little glass balls—proof that guys have no business decorating Christmas trees, right?!? If we actually shoot one glass ball on top of another, well, they both break, Santa is less than pleased, and we might never get to
 open that green box! Here are the nested <b>For...Next</b> loops that check for this:</p>
<pre><code>For Ornaments = 1 To OrnamentCount<br>    If Ornaments &lt; OrnamentCount Then<br>        For OtherOrnaments = (Ornaments &#43; 1) To OrnamentCount<br>            // Process balls hitting balls, don't count them and <br>            // don't show them<br>            If SpritesIntersect(&quot;Ball&quot; &#43; Ornaments, &quot;Ball&quot; &#43; <br>                                 OtherOrnaments) Then<br>                PlaySound( OrnamentHit )<br>                HideSprite(&quot;Ball&quot; &#43; Ornaments)<br>                HideSprite(&quot;Ball&quot; &#43; OtherOrnaments)<br>                HitCount = HitCount - 2<br>            End If<br>        Next<br>    End If<br>Next</code></pre>
<p>Besides nested loops always being fun exercises of logic, this is interesting because it shows how easy it can be to use an automatic type conversion to build a string from a number. Our sprites are named Ball1 to Ball5, and when we need to process them
 in a loop this way, we can simply construct the name by concatenating &quot;Ball&quot; &#43; Ornaments, where the latter is the integer loop index.</p>
<h2>Allowing user customization of game behavior</h2>
<p>Besides being educational, open-source KPL games have the advantage of allowing a user to change or customize the game behavior. The entire game and all its code is there for the user's modification, but it's also worth putting a little thought and effort
 into allowing easy customization of the behavior of your game. Our Christmas Tree Shooter does this with three global variables, defined, commented and changeable up at the top of the program file:</p>
<pre><code>// Set these next 3 variables to affect game play<br>Define CrossHairSpeed As Int = 20<br>Define TreeSpeed As Int = 20<br>// how many times the tree will move before game is over<br><br>Define MoveCount As Int = 2 // = once to the right, once to the left</code></pre>
<p>Good naming and comments make this pretty easy for users to find and change. The two speed variables can be tweaked to make the game easier or harder, depending on the user's reflexes. And the move count can be increased to lengthen the game and allow the
 user more time.</p>
<p>Building in game settings based on global variables like this just takes a little thought, and can allow a fun extra level of control for people playing your game.</p>
<h2>What's next?</h2>
<p>Two or three other Holiday-themed KPL games should also be up on the Coding4Fun site. Have fun with them, and Happy Holidays—no matter which particular Holiday you're celebrating at this time of year!</p>
<p>KPL Asteroids is also next in the series of retro games implemented with KPL—watch for that in the next couple of weeks!</p>
<p>There are now dozens of open source KPL games, and dozens more educational programs—either included in the base KPL install, or new and separately downloadable. Check them all out at
<a href="http://www.kidsprogramminglanguage.com/download.htm">http://www.kidsprogramminglanguage.com/download.htm</a>.</p>
<p>Moral of the story? Coding4Fun isn't just a name—it's the point!</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/c4f.Walt-Morrison/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:e1c85d2eb93540c5b3f49e7600d7cc72">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Kids-Programming-Language-Christmas-Tree-Shooter</comments>
      <itunes:summary>



&amp;nbsp;
This article lights on a language called Kids Programming Language (KPL). This is a very easy language and especially made for people which are not the memeber of programers team. It mainly deals with games.



Walt Morrison and Jon Schwartz


Difficulty: Intermediate
Time Required: 
1-3 hours
Cost: Free
Software: Phrogram
Hardware: 
Download: Download






Ho Ho Ho! Merry Christmas! Happy Holidays! Ho Ho Ho! Naughty or nice? We don&#39;t really want to know! Ho Ho Ho! 
Have you seen the previous articles here at Coding4Fun about KPL, the 
Kid&#39;s Programming Language? The 
overview and the article on 
KPL Pong. KPL is not just for kids; it&#39;s for anyone who wants to code fun stuff fast. Proving the point, we&#39;re working on a couple of Holiday-themed KPL games and articles—like this one, ChristmasTreeShooter.kpl! We have a fun and easy suggestion for how
 you and family or friends can modify the game yourself, too.  
 
For some unknown reason, your Christmas tree is bobbing and weaving unpredictably before your eyes. It just won&#39;t hold still! And you have the rest of these ornaments that you
have to hang on the tree, or you can forget about opening that green box. You suspect it&#39;s got an
Xbox 360 in it, and going with that theory, you&#39;re
not shaking it like the others. Just in case. Anyway, you do your best with the ornaments, and Santa rates your performance at the end. Not a guy you want to disappoint, coming down to that Christmas Eve wire... 
This KPL game was implemented in 161 KPL instructions, and will be simple code for an experienced or hobbyist programmer to follow. It uses sprites for graphics and uses custom sound clips, which we&#39;re going to show you how to replace with your own voice-overs.
 What are friends or family going to say when it&#39;s you who rates their performance? Are you going to be deadpan and droll? Acerbic and insulting? Will you do a Santa voice, a Mrs. Claus voice or an Elf voice? However you record it, you know it&#39;ll be
 fun! 
Chance</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Kids-Programming-Language-Christmas-Tree-Shooter</link>
      <pubDate>Thu, 23 Nov 2006 05:39:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Kids-Programming-Language-Christmas-Tree-Shooter</guid>      
      <dc:creator>Walt Morrison </dc:creator>
      <itunes:author>Walt Morrison </itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Kids-Programming-Language-Christmas-Tree-Shooter/RSS</wfw:commentRss>
      <category>events</category>
      <category>Holiday</category>
    </item>    
</channel>
</rss>