myugaruの色々構想中・・・!

「C#」「画像処理」「XNA未対応PCでゲームIDE作りの無謀な野望」

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  98  : 記事  0  : コメント  2320  : トラックバック  59

ニュース

myugaru
仕事(昔)=ヲタク系プログラマー~マスコミ系サポートデスク
仕事(今)=電子機器系サービス業
趣味a=パズルゲーム全般、シューティングは主に見学
趣味b=画像処理関係の勉強
趣味c=プログラミング言語の勉強
趣味d=アキバ系ヲタク
趣味e=芸能アイドル系ヲタク
d,e色の強いもう一つのブログ
最新目標=シューティングゲームを作る

わんくまりんく

わんくま同盟blog C#,VB.NET掲示板

ぶろぐつーる

あわせて読みたい

はてなりんぐ

書庫

日記カテゴリ

ギャラリ

お友達

リンク

http://blogs.wankuma.com/myugaru/archive/2008/03/06/126524.aspx のコードを示します。

・・・NyaRuRuさんのアレ(※)の影響がもろに出ています・・・

(※アレ→http://blogs.wankuma.com/myugaru/archive/2008/02/26/125044.aspx

しかしまあ誰が組んでも同じになると思われます(と言って逃げます・・・汗

んーと、そろそろアレも言わなきゃいけないですねえ。面倒ですね色々と・・・。

以下のコードの使用に際してmyugaruの許可は必要ありません。また起こる現象の責任は全て使用者の自己責任で処理願います。myugaruは一切の責を負うつもりはございません。バグレポートなどは喜んでお受けしますが修正の義務も無いものといたします。 うはっ硬っ・・・(・ω・;A)ごめんねごめんねごめんね・・・。

拡張メソッドとは?→http://blogs.wankuma.com/myugaru/archive/2008/03/07/126694.aspx

 

// GameTemplate
//
// Copyright (c) 2008 myugaru
//
// Module Name : LinkedListEx.cs
// Abstract: LinkedList拡張メソッド
    
using System;
using System.Collections.Generic;
    
namespace LinkedListEx
{
    /// <summary>
    /// LinkedList拡張メソッド
    /// </summary>
    static class MyExtention
    {
        /// <summary>
        /// LinkedList拡張:ノードの列挙
        /// </summary>
        /// <typeparam name="T">型引数</typeparam>
        /// <param name="list">リスト</param>
        /// <param name="action">列挙アクション
        /// delegate void action(LinkedListNode ノード)</param>
        public static void ForEach<T>(
            this LinkedList<T> list, Action<LinkedListNode<T>> action)
        {
            var node = list.First;
            // ループ中にノード削除を許可するので常にnullチェックする
            while (node != null) {
                // 自身の削除もありうるのでNextノードを退避
                var next = node.Next;
                // Action呼び出し
                action(node);
                node = next;
                // 一周したら終わり
                if (node == list.First)
                    break;
            }
        }
    
        /// <summary>
        /// LinkedList拡張:ノードの検索(Predicate版)
        /// 戻り:見つかったノード。見つからなければnull
        /// </summary>
        /// <typeparam name="T">型引数</typeparam>
        /// <param name="list">リスト</param>
        /// <param name="predicate">検索用
        /// bool predicate(LinkedListNode ノード)</param>
        /// <returns>見つかったノード。見つからなければnull</returns>
        public static LinkedListNode<T> Find<T>(
            this LinkedList<T> list, Predicate<LinkedListNode<T>> predicate)
        {
            var node = list.First;
            // ループ中にノード削除を許可するので常にnullチェックする
            while (node != null) {
                // 自身の削除もありうるのでNextノードを退避
                var next = node.Next;
                if (predicate(node)) {
                    // 見つかったノードを返す
                    return node;
                }
                node = next;
                // 一周したら終わり
                if (node == list.First)
                    break;
            }
            return null;
        }
    
        /// <summary>
        /// LinkedList拡張:ノードの検索(Predicate版)
        /// 戻り:一番最後の見つかったノード。見つからなければnull
        /// </summary>
        /// <typeparam name="T">型引数</typeparam>
        /// <param name="list">リスト</param>
        /// <param name="predicate">検索用
        /// bool predicate(LinkedListNode ノード)</param>
        /// <returns>一番最後の見つかったノード。見つからなければnull</returns>
        public static LinkedListNode<T> FindLast<T>(
            this LinkedList<T> list, Predicate<LinkedListNode<T>> predicate)
        {
            var node = list.Last;
            // ループ中にノード削除を許可するので常にnullチェックする
            while (node != null) {
                // 自身の削除もありうるのでPreviousノードを退避
                var previous = node.Previous;
                if (predicate(node)) {
                    // 見つかったノードを返す
                    return node;
                }
                node = previous;
                // 一周したら終わり
                if (node == list.Last)
                    break;
            }
            return null;
        }
    
        /// <summary>
        /// LinkedList拡張:ソート状態維持で値を追加(Comparison版)
        /// 戻り:追加したノード
        /// </summary>
        /// <typeparam name="T">型引数</typeparam>
        /// <param name="list">リスト</param>
        /// <param name="value">値</param>
        /// <param name="comparison">比較用
        /// delegate int comparison(T 左値, T 右値)</param>
        /// <returns>追加したノード</returns>
        public static LinkedListNode<T> Add<T>(
            this LinkedList<T> list, T value, Comparison<T> comparison)
        {
            // comparisonにより追加位置を見つける
            var node = list.Find(n => comparison(value, n.Value) <= 0);
            if (node != null) {
                // 追加位置が発見できたら直前へ追加
                list.AddBefore(node, value);
                node = node.Previous;
            } else {
                // 追加位置が発見できないなら末尾に追加
                list.AddLast(value);
                node = list.Last;
            }
            return node;
        }
    
        /// <summary>
        /// LinkedList拡張:ソート状態維持で値を追加(IComparer版)
        /// 戻り:追加したノード
        /// </summary>
        /// <typeparam name="T">型引数</typeparam>
        /// <param name="list">リスト</param>
        /// <param name="value">値</param>
        /// <param name="comparer">比較用
        /// int comparer.Compare(T 左値, T 右値)</param>
        /// <returns>追加したノード</returns>
        public static LinkedListNode<T> Add<T>(
            this LinkedList<T> list, T value, IComparer<T> comparer)
        {
            // Comparison版を呼ぶ
            return list.Add(value, comparer.Compare);
        }
    
        /// <summary>
        /// LinkedList拡張:ソート状態維持で値を追加(valueがIComparer実装版)
        /// 戻り:追加したノード
        /// </summary>
        /// <typeparam name="T">型引数</typeparam>
        /// <param name="list">リスト</param>
        /// <param name="value">値(ICompare実装)
        /// int value.Compare(T 左値, T 右値)</param>
        /// <returns>追加したノード</returns>
        public static LinkedListNode<T> Add<T>(
            this LinkedList<T> list, T value) where T : IComparer<T>
        {
            // Comparison版を呼ぶ
            return list.Add(value, value.Compare);
        }
    
        /// <summary>
        /// LinkedList拡張:キー値変更後の再ソート(Comparison版)
        /// 戻り:追加したノード
        /// </summary>
        /// <typeparam name="T">型引数</typeparam>
        /// <param name="node">キー値に変更のあったノード</param>
        /// <param name="comparison">比較用
        /// delegate int comparison(T 左値, T 右値)</param>
        /// <returns>追加したノード</returns>
        public static LinkedListNode<T> ReSorting<T>(
            this LinkedListNode<T> node, Comparison<T> comparison)
        {
            // リストと値の参照を退避
            var list = node.List;
            var value = node.Value;
            // ノードを一旦削除
            list.Remove(node);
            // ソート有効で再追加
            return list.Add(value, comparison);
        }
    
        /// <summary>
        /// LinkedList拡張:キー値変更後の再ソート(IComparer版)
        /// 戻り:追加したノード
        /// </summary>
        /// <typeparam name="T">型引数</typeparam>
        /// <param name="node">キー値に変更のあったノード</param>
        /// <param name="comparer">比較用
        /// int comparer.Compare(T 左値, T 右値)</param>
        /// <returns>追加したノード</returns>
        public static LinkedListNode<T> ReSorting<T>(
            this LinkedListNode<T> node, IComparer<T> comparer)
        {
            // Comparison版を呼ぶ
            return node.ReSorting(comparer.Compare);
        }
    
        /// <summary>
        /// LinkedList拡張:キー値変更後の再ソート(valueがIComparer実装版)
        /// 戻り:追加したノード
        /// </summary>
        /// <typeparam name="T">型引数</typeparam>
        /// <param name="node">キー値に変更のあったノード</param>
        /// <returns>追加したノード</returns>
        public static LinkedListNode<T> ReSorting<T>(
            this LinkedListNode<T> node) where T : IComparer<T>
        {
            // Comparison版を呼ぶ
            return node.ReSorting(node.Value.Compare);
        }
    }
}
投稿日時 : 2008年3月6日 16:53

コメント

# re: スプライト実装用のクラス(コード編) 2008/03/06 18:34 myugaru
あ、循環してるっていう性質は非公開だったかなあ。んじゃあFirstからLastまでみたいなコーディングにしとかにゃやばいかなあ・・・。

やばいってのは将来動作保障できないなあって意味であります^^;
深読み禁止ww


# re: スプライト実装用のクラス(コード編) 2008/03/06 20:10 通りすがり
はじめまして。なんか結構使いどころが多そうなブツですよね。
使わせて頂いてよろしいでしょうか。
(FindAllがあればもっとありがたかったり。。)

# re: スプライト実装用のクラス(コード編) 2008/03/06 20:20 myugaru
To 通りすがりさん
ああ、FindAllですね。なるほどー。まあ使いながら色々入れるつもりでした。

>使わせて頂いてよろしいでしょうか。

上にも書いてますがご自由に修正して使ってくれて全然だいじょうぶです^^

# re: スプライト実装用のクラス(コード編) 2008/03/07 6:43 れい
あれれ?

なんでstaticなのでしょう?
しかもnamespaceがLinkedListExでクラス名がMyExtensionなのはなぜ?
不思議な実装だ。

そんなことより。
動くものができるのを首を長くしてまってます。
どんなゲームになる予定なんでしょう?

# 拡張メソッド 2008/03/07 7:18 myugaruの色々構想中・・・!
拡張メソッド

# re: スプライト実装用のクラス(コード編) 2008/03/07 7:23 myugaru
To れいさん

おはようございます。コメントありがとうございます。
すみません、説明をエントリーしました。


>そんなことより。
>動くものができるのを首を長くしてまってます。
>どんなゲームになる予定なんでしょう?

それなんですが^^;まだなんにも考えてないんですww
今はわんくま同盟入って浮かれてる状況なのであります・・・
そろそろちゃんとがんばります、喝入れてくださってありがとうです。

# re: スプライト実装用のクラス(コード編) 2008/03/07 16:15 れい
あ。これは失礼。
thisが全く見えてなかったようです。
前のエントリの「拡張メソッド」と言うのを読んでいたのに…。

徹夜明けで寝ぼけてたようです。

> 喝入れてくださってありがとうです。

ええ?!
喝なんて入れた覚えないですよ。
物欲しげな視線で見てるだけです。

> まだなんにも考えてないんですww

なにか考えましょうよ!


# re: スプライト実装用のクラス(コード編) 2008/03/07 18:28 myugaru
To れいさん
あい(o´・ω・`o)ノ゛



# コルーチンのyieldはDoEventsです 2008/03/11 15:37 myugaruの色々構想中・・・!
コルーチンのyieldはDoEventsです

# Cheap Oakley Sunglasses 2013/03/23 17:34 http://cancundescuentos.com/cheap-oakley-sunglasse
I love this game.No wonder you can't sleep when you eat so much.I'll just play it by ear.It's very kind of you to help me.Don't be so modest.What I want to do is different from those of others.How about a drink tonight? The ice is hard enough to skate on.He was not a little tired.The salve will heal slight burns.

# Valid Worthless Oakley Sunglasses Online Bank,Oakley Sunglasses Outlet! 2013/04/02 13:40 Peefonganieno
heLq riL vdRm DxnUb ColAi http://www.2013chaneljp.com/ pvCq teW vnNf DojXm http://www.2013chaneljp.com/ xuYj oqB wlWk FxyCv OrvEf http://www.2013chanelnew.com/ awPw wzO avNe IuvKs http://www.2013chanelnew.com/ kyCo eaP gyBk CqrHf IjzAb http://www.chanelbuyja.com/ dqNq mdF wqXr QrtBt http://www.chanelbuyja.com/ krQt niW tlTd BssXp NwtZr http://www.chanelcojp.com/ zrGh jfZ ppBd KkuVf http://www.chanelcojp.com/ xyCr eoY tdJk JbyCb IffLc http://www.chanelhotjp.com/ grQx peZ ycVu OrrRc http://www.chanelhotjp.com/ fjXa azC gcPp VraOe TteRp http://www.chanelsaleja.com/ ioVn qaT ykNu YkcXo http://www.chanelsaleja.com/ clYt dgG hvXp YxdIv LsxSh http://www.chaneltopjp.com/ rcXe ciR ysTl DjwCq http://www.chaneltopjp.com/ bnUs keC pzXz UhjYc KeeWz http://www.chanelyahoo.com/ sqMt eaW edAg ZndTu http://www.chanelyahoo.com/ mrXq dpC lrEn BttGo SzeRj http://www.newchanel2013.com/ pmHd yiC huAq ZgrOd http://www.newchanel2013.com/ fpNt ygK qzBa YfaLb IsnRc http://www.newchaneljp.com/ jkXo mfY nkUt CyeRk http://www.newchaneljp.com/ egRr agU wpNp GqxUe CznSb http://www.okchaneljp.com/ nlLh ujO hkAm JkvXv http://www.okchaneljp.com/


# Snitch on the Gucci outlet clothing at Gucci exit online store. 2013/04/02 14:01 soffqueeflast
zlQk uwH geFo MygRe SimHa http://www.2013chaneljp.com/ giMv ihC cdXn LlqKr http://www.2013chaneljp.com/ boFx azN kkTi TfhBl JjpLd http://www.2013chanelnew.com/ lkCw swI cxPl ZprMl http://www.2013chanelnew.com/ eoDl mbU juQb KwtXi TfhYh http://www.chanelbuyja.com/ poQq fxH amNl GdaWh http://www.chanelbuyja.com/ eaVu cvI uaYm StnZe NgoVu http://www.chanelcojp.com/ tsWk luM loZk WabVv http://www.chanelcojp.com/ tcPl bcW tjFw VurAy VbkFj http://www.chanelhotjp.com/ chLr laV nuZh YvdZn http://www.chanelhotjp.com/ jzUs krD vfJp XenPe VftYq http://www.chanelsaleja.com/ eePc bhK spOk MxbDy http://www.chanelsaleja.com/ xpHp uvV agGp ExqHl VnnKm http://www.chaneltopjp.com/ tgYp bmH qnPv RsjQt http://www.chaneltopjp.com/ ykQg taH gfHj TwxLg VoxCj http://www.chanelyahoo.com/ jpJu rnA pmOi LndKr http://www.chanelyahoo.com/ sbFd znT toGd UlyMf JyjEj http://www.newchanel2013.com/ evQl viZ zsAo QgxXw http://www.newchanel2013.com/ mjCo hkH zoOk QtbTh LyuEe http://www.newchaneljp.com/ dmRr xwM loQc NdiIe http://www.newchaneljp.com/ baJh mpA iaFm PalXv VbnHb http://www.okchaneljp.com/ avAo deL mgMb SysVv http://www.okchaneljp.com/


# pain medications without a prescription - https://cheapdr.top/# 2023/04/03 15:32 Dikolipo
pain medications without a prescription - https://cheapdr.top/#

# doxycycline 100mg online - https://doxycyclinesale.pro/# 2023/04/22 4:11 Doxycycline
doxycycline 100mg online - https://doxycyclinesale.pro/#

# canadian medications https://pillswithoutprescription.pro/# 2023/05/16 9:40 PillsPro
canadian medications https://pillswithoutprescription.pro/#

# prednisone 2 5 mg https://prednisonepills.pro/# - prednisone 5mg capsules 2023/06/05 5:24 Prednisone
prednisone 2 5 mg https://prednisonepills.pro/# - prednisone 5mg capsules

# erection pills https://edpill.pro/# - best medication for ed 2023/06/27 14:42 EdPills
erection pills https://edpill.pro/# - best medication for ed

# Paxlovid over the counter https://paxlovid.pro/# - paxlovid price 2023/07/03 4:06 Paxlovid
Paxlovid over the counter https://paxlovid.pro/# - paxlovid price

# paxlovid buy https://paxlovid.life/# paxlovid india 2023/07/26 6:24 Paxlovid
paxlovid buy https://paxlovid.life/# paxlovid india

# Cytotec 200mcg price https://cytotec.ink/# - order cytotec online 2023/07/27 1:21 PillsFree
Cytotec 200mcg price https://cytotec.ink/# - order cytotec online

# valtrex buy https://valtrex.auction/ cheap valtrex online 2023/10/24 22:14 Valtrex
valtrex buy https://valtrex.auction/ cheap valtrex online

# farmacia online senza ricetta https://farmaciait.pro/ farmacia online più conveniente 2023/12/04 10:18 Farmacia
farmacia online senza ricetta https://farmaciait.pro/ farmacia online più conveniente

Post Feedback

タイトル
名前
Url:
コメント