小编And*_*ech的帖子

C:你如何模拟'例外'?

我来自C#背景,但我现在正在学习C. 在C#中,当想要发出错误信号时,就会抛出异常.但你在C做什么?

比如说你有一个堆栈pushpop函数.什么是在a期间表示堆栈为空的最佳方式pop?你从这个功能返回什么?

double pop(void)
{
    if(sp > 0)
        return val[--sp];
    else {
        printf("error: stack empty\n");
        return 0.0;
    }
}
Run Code Online (Sandbox Code Playgroud)

K&R的第77页示例(上面的代码)返回一个0.0.但是,如果用户0.0在堆栈上推送了更早的内容,您如何知道堆栈是否为空或是否返回了正确的值?

c stack exception-handling

14
推荐指数
3
解决办法
2746
查看次数

使用DataContractJsonSerializer反序列化一个简单的JSON数组

我确定这个问题一再被问到,但由于某种原因,我仍然无法让这个问题起作用.

我想反序列化包含单个成员的JSON对象; 一个字符串数组:

{"results" : ["a", "b"]}
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试反序列化的类:

public class Whatever {
    [DataMember(Name = "results")]
    public string[] Results { get; protected set; }
}
Run Code Online (Sandbox Code Playgroud)

这是Deserialize方法:

private static T Deserialize<T>(string json)
{
    var instance = Activator.CreateInstance<T>();
    using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
    {
        var serializer = new DataContractJsonSerializer(instance.GetType());
        return (T)serializer.ReadObject(ms);
    }
}
Run Code Online (Sandbox Code Playgroud)

类似的调用Deserialize<Whatever>("{\"results\" : [\"a\", \"b\"]}")返回一个初始化的实例,WhateverResults数组仍在停留null.

结构有问题Whatever吗?

.net c# json

14
推荐指数
2
解决办法
5万
查看次数

WPF:旋转后获取新坐标

参考我目前正在构建的这个编程游戏.

alt text http://img12.imageshack.us/img12/2089/shapetransformationf.jpg

要在WPF中翻译Canvas,我使用两个表单:( TranslateTransform移动它)和RotateTransform(旋转它)[ 相同的子节点 TransformationGroup ]

我可以很容易地获得画布的左上角x,y坐标,当它没有旋转(或旋转90度,因为它将是相同的),但我面临的问题是左上角(和其他3点)坐标.

这是因为当RotateTransform应用a 时,TranslateTransform's XY属性不会改变(因此仍然表明正方形的左上角就像点状正方形(来自图像)

Canvas正在从它的中心旋转,因此它就是它的起源.

那么如何在旋转后获得4个点的"新"x和y坐标

[UPDATE]

alt text http://img25.imageshack.us/img25/8676/shaperotationaltransfor.jpg

我找到了找到左上角的方法通过将旋转中的OffsetX和OffsetY添加到起始X和Y坐标,在旋转后坐标的方法(从新图像中可以看到).

但我现在无法找出其余的坐标(另外3个).

通过这种旋转的形状,我如何计算其余3个角的x和y坐标?

[编辑]

第二张图片中的点不准确和精确点.我在脑海中估计了这一点.

[更新]解决方案:

首先,我要感谢Jason S.这篇冗长且非常翔实的文章,其中他描述了整个过程背后的数学; 通过阅读你的帖子和尝试价值观,我当然学到了很多东西.

但我现在已经找到了一个代码片段(感谢EugeneZ的提及TransformBounds),它完全符合我的要求:

public Rect GetBounds(FrameworkElement of, FrameworkElement from)
{
    // Might throw an exception if of and from are not in the same visual tree
    GeneralTransform transform = …
Run Code Online (Sandbox Code Playgroud)

math wpf transform

13
推荐指数
2
解决办法
2万
查看次数

JSON语法:传输数组

一个有效的 JSON语法是什么样的东西:

{
  "username": "admin",
  "password": "123"
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想传输一组"用户"(给定示例)而不是单个"用户"呢?

根据规范,代码是否有效JSON?

[{
  "username": "admin",
  "password": "123"
}, {
  "username": "bbvb",
  "password": "sdfsdf"
}, {
  "username": "asd",
  "password": "222"
}]
Run Code Online (Sandbox Code Playgroud)

如果没有,使用JSON传输值数组的最佳方法是什么?(并且用'最好的方式',我的意思是语法上的)

serialization json data-transfer

12
推荐指数
2
解决办法
2万
查看次数

使用.Net开发Robocode类型的游戏,用于学校作业

我目前在学校的最后一年,攻读计算机研究高等国家文凭,基本上在最后一个学期,我们需要开发一个软件项目,基本上包含一个完整的系统.

现在,我正在考虑做的事情就像Robocode一样,但是我将使用.Net Framework来代替Java.


什么是Robocode?

对于那些你不知道的Robocode是什么,它基本上是一种编程游戏在人们开发利用的类接口和存在的下载类的方法自己的机器人,然后他们在对方的自主战斗竞技场......像这样:

alt text http://articles.techrepublic.com.com/i/tr/cms/contentPics/robocode.gif


所以基本上,正如我所说,我想使用.Net Framework重新创建这种场景.我在StackOverflow上发布这个问题,希望更有经验的开发人员能够指导我为这个项目正确的方向.

到目前为止我的想法基本上是创造:

  • 一个脱机应用程序,将作为战斗舞台和用户界面,与现有的机器人等创建新的战斗.
  • 玩家可以使用在线界面注册新机器人,查看过去的锦标赛分数等...
  • 显然,玩家需要使用类接口来创建他们的机器人.

动画和图形(用于实际战斗)

现在,当战斗发生时,当然会有某种动画和动作,我还没有决定还有什么用作媒介.

我目前想到的选项是:

  • 正如我在上面的第一个要点中所说,开发一个将作为战场的离线应用程序,所有动画将主要使用C#代码完成
  • 或者开发一个可以处理动画的Silverlight应用程序(因此,将场景从离线应用程序更改为现在的在线应用程序
  • 或者,也许是最不可行的,使用JavaScript创建战斗动画,使用类似Canvas的东西

你认为什么可能更适合这种特殊情况?


开发类和接口

对于玩家开发机器人,我将提供他们能够像Robocode一样使用的某些类接口.

此类事件和方法的示例可能包括:

public void run () {}
public void onScannedRobot(ScannedRobotEvent e) {}

walk(/* ammount in pixels or w/e to walk to */);
turnRight(/* value in degrees for an angular turn */);
//etc...
Run Code Online (Sandbox Code Playgroud)

以下是Robocode(Java)中代码的片段:

public class MyFirstRobot extends Robot {
    public void run() {
        while (true) {
             ahead(100);
             turnGunRight(360);
             back(100);
             turnGunRight(360); …
Run Code Online (Sandbox Code Playgroud)

.net project-planning projects-and-solutions robocode

12
推荐指数
2
解决办法
3572
查看次数

根据子类从基类指定抽象方法的返回类型

我有以下结构:

abstract class Base {
        public abstract List<...> Get(); //What should be the generic type?
}

class SubOne : Base {
    public override List<SubOne> Get() {

    }
}

class SubTwo : Base {
    public override List<SubTwo> Get() {

    }
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个抽象方法,返回具体子类的任何类.因此,正如您从示例中看到的那样,方法SubOne应返回,List<SubOne>而方法SubTwo应该返回List<SubTwo>.

我在Base类中声明的签名中指定了什么类型?


[UPDATE]

谢谢你发布的答案.

解决方案是使抽象类具有通用性,如下所示:

abstract class Base<T> {
        public abstract List<T> Get();
}

class SubOne : Base<SubOne> {
    public override List<SubOne> Get() {

    }
}

class SubTwo : Base<SubTwo> {
    public …
Run Code Online (Sandbox Code Playgroud)

c# generics polymorphism abstract-class overriding

12
推荐指数
1
解决办法
2万
查看次数

"每种语言都是为特定目的而创建的"

我正在阅读"Dot Net Thoughts"中的" 为什么语言很重要(为什么我更喜欢C#) " 的帖子,本文的第一段以此声明结束:

......每种语言都是为特定目的而创建的.

这让我想到了某些语言存在的"原因"......即它们存在的具体原因是什么.

我从这个问题的目标是列出尽可能多的编程语言及其存在的主要原因 ......为什么使用它们; 这将有助于人们决定使用什么语言来执行特定任务.

语言,如C#,VB,Haskell,Eiffel,Perl,Python,Java等; 程序语言,函数语言,面向对象语言等......

language-agnostic programming-languages

12
推荐指数
4
解决办法
2542
查看次数

从javascript调用Jquery函数

如何从javascript调用jQuery函数?

 //jquery
 $(function() {

        function my_fun(){
               /.. some operations ../
        } 
 });

 //just js
 function js_fun () {

       my_fun(); //== call jquery function 
 }
Run Code Online (Sandbox Code Playgroud)

javascript jquery

12
推荐指数
4
解决办法
11万
查看次数

原始递归与"正常"递归有何不同?

我目前正在阅读Simon Thompson的The Craft of Functional Programming,在描述递归时,他还提到了一种称为Primitive Recursion的递归形式.

你能解释一下这种类型的递归与"普通"递归函数有什么不同吗?

这是一个原始递归函数的例子(在Haskell中):

power2 n
    | n == 0    = 1
    | n > 0     = 2 * power2(n - 1)
Run Code Online (Sandbox Code Playgroud)

recursion

12
推荐指数
2
解决办法
4699
查看次数

在不破坏浏览器的情况下分析JavaScript

所以尝试分析一些代码,我认为最简单的方法(至少在Firefox上)是使用console's time/ timeEndprofile/ profileEnd,我尝试了两种.

我遇到的问题是我在Firefox崩溃之前可以做的运行次数.现在我不会在这里粘贴代码,因为它是典型的基准测试代码(并且它非常混乱),但显然它的要点是它运行函数(测试用函数表示),记录它们的执行时间为一定数量跑步

现在,例如,5e4它可以运行,但我认为它不足以发现(非常)微优化,但更重要的是,它崩溃了.

那你如何描述你的JavaScript?因为这样,它几乎不可行.

javascript firebug profiling

12
推荐指数
1
解决办法
2026
查看次数